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
这里我有一些用于扫描文件并将其拆分为项目的代码
代码=
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