我有一个abc.txt
在我的 c: 驱动器中命名的文件,我正在通过 java 缓冲写入器方法读取它。下面显示了文件的内容
abc.txt
******
Id|ytr|yts
1|W|T
2|W|T
3|W|T
现在我想以这样的方式将它的内容存储在一个集合中(即在一个哈希图中),对于 Id 键,我应该得到 ytr 和 yts 列的值。
那是1
我应该得到 ytr 和 yts 列的值的 Id。
请告诉我如何将这样的东西存储在地图中并检索它,我想通过java本身来实现它。
我有一个abc.txt
在我的 c: 驱动器中命名的文件,我正在通过 java 缓冲写入器方法读取它。下面显示了文件的内容
abc.txt
******
Id|ytr|yts
1|W|T
2|W|T
3|W|T
现在我想以这样的方式将它的内容存储在一个集合中(即在一个哈希图中),对于 Id 键,我应该得到 ytr 和 yts 列的值。
那是1
我应该得到 ytr 和 yts 列的值的 Id。
请告诉我如何将这样的东西存储在地图中并检索它,我想通过java本身来实现它。
Create some sort of class that has ytr and yts as fields. Create a map with id as key (it's an integer, right?) and instances of your new class as the values.
使用以下示例。
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(" ]");
}
首先,您应该使用阅读器(而不是您的问题所暗示的作家)阅读文件。任何Reader
可以逐行读取文件作为字符串的都可以。看看BufferedReader
例如。
两个将数据存储在您想要将您的密钥(一个简单的字符串,或者可能是一个整数)映射到您的数据(看起来像两个字符串)的映射中。由于您的数据是“复杂”数据结构,因此它没有原始数据类型。您应该创建一个将此数据保存为成员变量的类。当您阅读一行时,您然后创建该类的一个实例,将数据分配给该对象并HashMap
使用密钥将其放入您的。查看接受键和值对象的 put 方法。
我敢肯定,其余的你可以自己解决。请查看我在这里提到的类的 JavaDoc。如果您对什么是类/对象有一些基本的了解,您就可以完成其余的工作。