Java 使用多个标记生成哈希映射

Java 使用多个标记生成哈希映射,java,Java,我有以下文本文件 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.Bu

我有以下文本文件

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");
    }
}
导入java.io.BufferedReader;
导入java.io.FileNotFoundException;
导入java.io.FileReader;
导入java.io.IOException;
导入java.util.HashMap;
导入java.util.Map;
公开课获胜{
公共静态整数whowen(字符串文件名){
Map Map=newhashmap();
BufferedReader in=null;
试一试{
字符串行=”;
in=新的BufferedReader(新的文件读取器(文件名));
而((line=in.readLine())!=null){
系统输出打印项次(行);
字符串部分[]=行分割(“”);
映射放置(部分[0],部分[1]);
}
in.close();
}catch(filenotfounde异常){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
System.out.println(map.toString());
返回0;
}
公共静态void main(字符串[]args){
统计数据s=新统计数据();
s、 wins(“filepath/filename.txt”);
}
}

当然,地图可以将集合存储为值,因此您可以这样做

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);
Map Map=newhashmap();
...
列表=新的ArrayList();
列表。添加(第[1]部分);
…将所有令牌添加到列表中
地图放置(零件[0],列表);

您可以使用
地图
地图
我建议将dto设置为
团队
,您可以在其中存储团队成员姓名等团队详细信息

然后,您可以将另一个dto设置为
匹配
,您可以在其中存储team1、team2和哪支球队获胜的布尔值

然后,您可以创建一个
列表
,其中包含
匹配
,您可以在其中放置每行文本文件

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


因此,在您的案例中,我看不到Map的用例。

我知道存储它们会得到所有0和1的值。但是我怎么能再把他们分开呢?检查哪一队?因为我将得到一个包含1和0的所有人的列表。如果一开始是0,那么vs之后的球队就赢了。啊,误解了。好的,那么您可以,例如,通过“vs\\\”,或者更简单地,如果数字为0,则迭代(使用for循环)数组的元素1-4(从拆分),如果数字为1,则迭代6-9,并且只将这些元素添加到列表中。