从.txt文件中读取并转换为List <map> </map>

时间:2013-06-25 12:04:31

标签: java xml

我有重的.txt文件。它包含这样的格式:

  0      1    2    3    4    5    6    7   ... n
0 A,     B,   c,   D,   E,   F,   G,   H,  
1 AA,    BB,  CC,  DD,  EE,  FF,  GG,  HH, 
2
3
.
.
n

我想保存Map中的每一行。 例如,在第一行中:map&lt; 0,A&gt; 。 map&lt; 1,B&gt;,Map&lt; 2,C&gt;,... 然后我想在List中保存这些地图。例如,我想在List中保存100行。 例如,如果我写这个函数:“”list.get(1).get(4); “”我收到了“EE” 这意味着首先我要排成一排,然后我去4并重温“EE”。 你能指导我如何解决这个问题吗? 我读了一些关于“春季批次”的文章。它与我想要的相关 你能帮我解决一下如何解决这个问题吗?

public class spliter {
    static int w=0;
    private static HashMap<Integer,String> map = new HashMap<Integer,String>();
    private static List<Map<Integer, String>> list=new ArrayList<Map<Integer,String>>();
    public static void main(String[] args) throws IOException{
        String string = null;
        try {
            BufferedReader reader = new BufferedReader(new FileReader("C:\\test.txt"));

            while( (string = reader.readLine()) != null ) {

                String[] parts = string.split(",");
                int i=parts.length;
                for(int j=0; j<i; j++){
                    map.put(j, parts[j]);
                }           
                list.add(map);
                w++;
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }   
    }
}

3 个答案:

答案 0 :(得分:3)

使用扫描仪读取每一行,然后String.split(...)分割每一行,可以解决这个简单的问题。类似的东西:

while line exists
  read line into String using Scanner
  split String using String#split(...)
  use array from split to create a list
  add above list to master list
end while

请注意,您可以在列表列表中包含此内容,而无需使用Map。 List<List<String>>应该为你做。

我认为,对我们来说,给你这样的一般性建议更有启发性,然后看看你能用它做些什么。

我已经制作了社区Wiki,所以所有人都可以轻松地为这个答案做出贡献,所以没有人会因为赞成而获得声誉。

答案 1 :(得分:0)

我需要同样的东西,我是在考虑到你的情况下

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.*;
public class Spliter {
    private static List<Map<String, Object>> list = new ArrayList<> ();
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new FileReader("C:\\Users\\829784\\Desktop\\Repo\\Documentacion Repositorio\\test.txt"));
        String line = "";
        String firstline = reader.readLine();
        while ((line = reader.readLine()) != null) {
            Map < String, Object > map = new TreeMap < > ();
            String[] partsfirstline = firstline.split(";");
            String[] parts = line.split(";");
            int i = parts.length;
            for (int j = 0; j < i; j++) {
                map.put(partsfirstline[j], parts[j]);
            }
            list.add(map);
        }
        System.out.println(list.get(0).values());
        System.out.println(list.get(1).values());
    }
}

答案 2 :(得分:-1)

你能为我们这样的事吗

public class ArrayReader {
public static void main(String[] args) {
    List<List<String >> array = new ArrayList<>();
    try (BufferedReader br = new BufferedReader(new FileReader("file.txt"));){
    String line;
    while ((line=br.readLine())!=null)
        array.add(Arrays.asList(line.split(",")));

    } catch (IOException e) {
        e.printStackTrace();
    }
}

}