Java 列出不同的名称

Java listing distinct names

这里我有一些用于扫描文件并将其拆分为项目的代码

代码=

Scanner scanner = new Scanner(new File("file.txt"));

while (scanner.hasNext()) {

                    String line = scanner.nextLine();
                    String[] item = line.split(":");

因此项目[0] = team1 item[1]= 家庭目标等...

File.txt =

Chelsea : 1 : Fulham : 1
Leeds : 2 Chelsea : 1
Leeds : 1 : Fulham : 2

以上是我正在阅读的文件。我可以使用什么代码打印出团队名称不重复的记分牌。目标、分数等无关紧要,我只想打印列出球队名称而不重复;

切尔西

利兹

富勒姆

使用Set存储团队名称。如果您尝试多次向 Set 添加某个值,它将只添加一次,因此您不会有重复值:

Set<String> teamNames = new HashSet<>();

while (scanner.hasNextLine()) {
    String[] parts = scanner.nextLine().split("\s*:\s*");
    teamNames.add(parts[0]);
    teamNames.add(parts[2]);
}

for (String teamName : teamNames) {
    System.out.println(teamName);
}

输出:

Fulham
Leeds
Chelsea

顺便说一下,使用 : 拆分字符串并不是最好的主意。在那种情况下,球队名称可以有 leading/trailing 空格,因此“Chelsea”和 "Chelsea" 实际上会被视为不同的名称。而是尝试使用此 (\s*:\s*) 进行拆分,它再次转换为零个或多个空白字符、冒号和零个或多个空白字符。

而且我认为这是一个错字

Leeds : 2 Chelsea : 1

应该是

Leeds : 2 : Chelsea : 1