如何将文件内容存储在映射中,其中键映射到具有两个属性的数据结构

时间:2013-11-11 07:51:43

标签: java collections map

我的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本身实现它。

3 个答案:

答案 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(" ]");
    }