1つの値だけを持つ値のペアを一意に格納する。JavaのStore(UniqueString、String)
入力: 追加(文字列、文字列)
49.205.119.239, hello
14.192.212.57, yollo
49.205.119.239, tello
14.192.212.57, bella
予想される出力:
49.205.119.239, hello
14.192.212.57, yollo
私は以下のコードを試してみました。 uniqueIp.putIfAbsent(line, actualLine);
は、すべての値を繰り返しキー(線)で均等に取ります。
public static void processLine(String actualLine) throws IOException {
GetLocationExample obj = new GetLocationExample();
Map<String, String> uniqueIp = new HashMap<String, String>();
Pattern pattern = Pattern.compile("([(]100.0)[)][\\]][:]*");
Matcher matcher = pattern.matcher(actualLine);
String ip = null;
String line = null ;
if (matcher.find())
{
ip= "100%";
Pattern pattern1 = Pattern.compile("\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b");
Matcher matcher1 = pattern1.matcher(actualLine);
if (matcher1.find())
{ line= (matcher1.group(0));
uniqueIp.putIfAbsent(line, actualLine);
}
else { System.out.println("Not Present"); }
}
else { return; }
for (String name: uniqueIp.keySet())
{
String key =name.toString();
String value = uniqueIp.get(name).toString();
System.out.println(key + " " + value);
}
はif(!uniqueIp.containsKey(key))
を試してみました。 did not work
キーをあなたのハッシュマップは 'Set'で、あなたは' String'を保存しようとしています、どうしますか? –
代わりにHashMap>を使用してください –
まあ...上記のサンプルコードで 'line'は初期化されておらず、nullです。 – pczeus