Java列出不同的名称

时间:2015-01-08 19:09:34

标签: java printing while-loop

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

代码=

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

while (scanner.hasNext()) {

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

因此item [0] = team1           item [1] = homegoals等......

File.txt =

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

以上是我正在阅读的文件。我可以用什么代码打印出团队名称没有重复的记分牌。目标,积分等并不重要我只想在打印中列出团队名称而不重复;

切尔西

利兹

富勒姆

1 个答案:

答案 0 :(得分:1)

使用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

顺便说一句,使用:分割字符串并不是最好的主意。在这种情况下,团队名称可能具有前导/尾随空格,因此&#34;切尔西&#34;和&#34;切尔西&#34;实际上会被认为是不同的名字。而是尝试使用此(\\s*:\\s*)进行拆分,这将转换为零个或多个空白字符,冒号和零个或多个空格字符。

另外我认为这是一个错字

Leeds : 2 Chelsea : 1

它应该是

Leeds : 2 : Chelsea : 1