使用多个标记创建哈希表

3

我有以下文本文件

0 name1 name2 name3 name4 vs. name11 name22 name33 name44
1 name1 name2 name3 name4 vs. name11 name22 name33 name44 

我希望存储 0、name1到4和name11到name44

我正在制作的程序告诉我哪个团队获胜了。 如果第一个整数是0,则name11到name44获胜,反之亦然。

我不知道如何创建多个标记?

目前为止,我有以下内容:

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class Winning {

    public static int whoWon(String filename) {
        Map<String, String> map = new HashMap<String, String>();
        BufferedReader in = null;
        try {
            String line = "";
            in = new BufferedReader(new FileReader(filename));
            while ((line = in.readLine()) != null) {
                System.out.println(line);
                String parts[] = line.split(" ");
                map.put(parts[0], parts[1]);
            }
            in.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        System.out.println(map.toString());

        return 0;
    }

    public static void main(String[] args) {
        Stats s = new Stats();
        s.wins("filepath/filename.txt");
    }
}
3个回答

2

当然,一个 Map 可以将 Collection 作为值进行存储,因此您可以像这样操作...

Map<String, List<String>> map = new HashMap<String, List<String>>();
...
List<String> list = new ArrayList<String>();
list.add(parts[1]);
...add all tokens to list
map.put(parts[0], list);

我知道将它们存储起来会得到所有值为0和1的结果。但是如何再次拆分它们以检查哪个团队获胜呢?因为我将得到一个包含所有人员的1和0列表。如果在开头是0,那么对阵后面的团队获胜。 - Maddy
啊,看错了。好的,那么你可以通过“vs\.”进行分割,或者更容易的是,如果数字为0,则遍历数组(从split中获取)的元素1-4,如果数字为1,则遍历6-9,并将它们添加到列表中。 - Florian Schaetz

1
你可以使用 Map<String, List<String>> map 或者 Map<String, String[]> map

0

我建议您创建一个名为Team的DTO,其中可以存储团队成员的姓名等团队详细信息。

然后,您可以创建另一个名为Match的DTO,其中可以存储team1、team2以及哪个团队获胜的布尔值。

然后,您可以创建一个Match列表,在其中可以放置文本文件的每一行。

如果第一个整数为0,则name11到name44获胜,反之亦然,因此我猜您将有多行值为0和1。

因此,在您的情况下,我不认为Map有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接