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,并且只将这些元素添加到列表中。