我的c:驱动器中有一个名为abc.txt
的文件,我通过java缓冲写入器方法阅读。显示文件内容下方
abc.txt
******
Id|ytr|yts
1|W|T
2|W|T
3|W|T
现在我想以这种方式将其内容存储在一个集合中(在一个hashmap中),对于Id键,我应该得到ytr和yts列的值。
那是Id 1
我应该得到ytr和yts列的值。
请告知我如何将这样的东西存储在地图中并检索它,我想通过java本身实现它。
答案 0 :(得分:1)
创建某种以ytr和yts为字段的类。创建一个id为key的映射(它是一个整数,对吧?)和新类的实例作为值。
答案 1 :(得分:-1)
首先,你应该用读者阅读文件(而不是你的问题建议的作家)。任何可以逐行读取文件的Reader
都可以。例如,请查看BufferedReader
。
两个将数据存储在Map中,以便将Key(一个简单的String,或者一个Integer)映射到您的数据(看起来像两个字符串)。
由于您的数据是复杂的"数据结构,即它没有原始数据类型。您应该创建一个将此数据保存为成员变量的类。当您读取一行时,您可以创建该类的实例,将数据分配给该对象并使用该键将其放入HashMap
。查看接受键和值对象的put方法。
我相信,其余的你可以自己搞清楚。请查看我在这里提到的类的JavaDoc。如果您对类/对象有一些基本的了解,那么您可以完成其余的工作。
答案 2 :(得分:-1)
使用以下示例。
1 W T
2 W T
3 W T
Map<Integer,String[]> map=new HashMap<>();
Scanner sc=new Scanner(new File("file.txt"));
while(sc.hasNextLine()){
String[] str=sc.nextLine().split(" +");
//Store to map.
map.put(Integer.valueOf(str[0]), new String[]{str[1],str[2]});
}
//Get key and values from map
for(Map.Entry<Integer,String[]> entry: map.entrySet()){
System.out.print("Key : "+ entry.getKey() +" Values : [");
for (String str : entry.getValue()) {
System.out.print(" "+str);
}
System.out.println(" ]");
}