如何从文本文件中删除重复的行

时间:2016-09-22 12:47:00

标签: java

是java的新手! 我想从文件中删除重复的行,但我需要保留更多大写字母的行

我可以用哪种功能来实现这个目标

如果文本文件包含以下单词

输入

汽车

CAR

总线

总线

自行车

预期输出

CAR

总线

自行车

2 个答案:

答案 0 :(得分:-1)

试试这个。

static class Str {

    final String origin;
    final int uppers;

    Str(String origin) {
        this.origin = origin;
        this.uppers = (int)origin.chars()
            .filter(Character::isUpperCase)
            .count();
    }
}

public static List<String> uniq(String file) throws IOException {
    Path path = Paths.get(file);
    List<String> lines = Files.readAllLines(path);
    Map<String, Str> map = new LinkedHashMap<>();
    for (String e : lines) {
        Str n = new Str(e);
        map.compute(e.toLowerCase(),
            (k, v) -> v == null || n.uppers > v.uppers ? n : v);
    }
    return map.values().stream()
        .map(s -> s.origin)
        .collect(Collectors.toList());
}

System.out.println(uniq("test.txt"));

结果:

[CaR, BUs, bike]

答案 1 :(得分:-2)

您可以先读取文本文件,然后将每行文本存储在字符串

列表中

然后你可以使用

str1.equalsIgnoreCase(STR2);

比较你的字符串

如果返回true则忽略该文本