读取第一行的文本文件具有键和第二行向前值

时间:2018-05-16 11:51:38

标签: java

****文本文件格式:****

FirstName,lastname,role,startdate,emptype
sreedhar,reddy,Admin,20-2-2018,contract
shekar,kumar,Admin,20-2-2018,contract
RAJ,roy,Admin,20-2-2018,contract
somu,reddy,Admin,20-2-2018,contract
sumanth,reddy,Admin,20-2-2018,contract

问题:

如何阅读文本文件以及如何放入Map(Key,vaule);

第一行在地图中有键(例如:firstname,lastname,ect)

地图上的第二行(例如:sreedhar,reddy等)

地图输出:{Firstname:sreedhar,Lastname:reddy,role:Admin,startdat:2-6-2018}

请任何一个提供java代码读取文本文件并放入地图读取有键,值对。

2 个答案:

答案 0 :(得分:1)

您需要为Map指定一个不同的密钥,因为它每次都需要一个唯一的密钥:

  

地图不能包含重复的键;每个键最多可映射一个   值。

所以你很可能需要Map Map来这里:

读入文件:

File file = new File("\\\\share\\path\\to\\file\\text.txt");

添加到扫描仪:

Scanner input = new Scanner(file);

将第一行读作“标题”:

String[] headerArray = input.nextLine().split(",");

创建Map Map s:

Map<String, Map<String, String>> myMap = new HashMap<>();

循环浏览文本文件的其余部分,添加到Map,然后将Map添加到主Map,以及一个密钥(我使用过{{1} }}):

User0, User1...

一旦你将其分解为步骤,它就会让生活更轻松。

答案 1 :(得分:0)

你可以这样做 -

br = new BufferedReader(new FileReader("file.txt"));
        String line = br.readLine();
        String headerLine = line;
        List<String> headerList = Arrays.asList(headerLine.split(","));
        List<List<String>> valueListList = new ArrayList<List<String>>();

        while (line != null) {
            line = br.readLine();
            String valueLine = line;
            if(valueLine != null) {
                List<String> valueList = Arrays.asList(valueLine.split(","));
                valueListList.add(valueList);
            }
        }

        Map<String, List<String>> map = new HashMap<String, List<String>>();
        for(int i=0; i<headerList.size();i++){
            List<String> tempList = new ArrayList<String>();
            for(int j=0; j<headerList.size();j++){
                tempList.add(valueListList.get(i).get(i));
            }
            map.put(headerList.get(i), tempList);
        }
        System.out.println(map);

输出

{emptype=[contract, contract, contract, contract, contract], 
startdate=[20-2-2018, 20-2-2018, 20-2-2018, 20-2-2018, 20-2-2018], 
role=[Admin, Admin, Admin, Admin, Admin], 
lastname=[kumar, kumar, kumar, kumar, kumar], 
FirstName=[sreedhar, sreedhar, sreedhar, sreedhar, sreedhar]}