在文本文件中打印重复的字符串

时间:2014-11-22 00:54:38

标签: java file

我已经完成了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);
            }

这是我尝试过的代码。我不知道它是否正确,但它对我不起作用

1 个答案:

答案 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