我已经完成了stackoverflow但无法将代码重新编写为我的要求(我是Java新手)。救救我!
我有一个文本文件,其中有一个没有空格的字符串,可能有n个字符串。 例如:
report-final.pdf--@19.5625
references.pdf--@46.25
multithread.pdf--@166.85546875
report-final.pdf--@19.5625
这是文件名和带分隔符的文件大小( - @)
我想从文本文件(例如
)打印重复的行(字符串) report-final.pdf--@19.5625
出现两次。所以我想打印出来。我尝试过使用哈希集(没有成功),但它只打印唯一的项而不是重复的项。 的修改
while (read.hasNext()) {
String line = read.nextLine();
if(map.containsKey(line)) {
map.put(line, map.get(line).longValue() + 1);
} else {
map.put(line, 1L);
}
这是我尝试过的代码。我不知道它是否正确,但它对我不起作用
答案 0 :(得分:2)
I have tried using hash set(without success) but it only prints only unique items and not the duplicate items.
......好吧,因为你错了。
这是使用Set
:
String[] data = new String[]{"report-final.pdf--@19.5625", "references.pdf--@46.25", "multithread.pdf--@166.85546875", "report-final.pdf--@19.5625"};
Set<String> entries = new HashSet<>();
for (String entry : data) {
if (!entries.add(entry)) {
System.out.println("Duplicate file entry: " + entry);
}
}
如果元素已成功添加到Set
,则 Set#add(E)
返回true,否则返回false。我们可以使用它来查找重复项,因为尝试添加它们会导致返回false
。
如果您愿意,也可以将这些条目添加到另一个Collection
。