2

我有沉重的 .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<0,A> 。map<1,B>, Map<2,C>,... 然后我想将此地图保存在列表中。例如我想在列表中保存 100 行。例如,如果我写这个函数: "" list.get(1).get(4); “”我收到“EE”这意味着首先我必须进入 1 行,然后我进入 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();
        }   
    }
}
4

3 回答 3

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,因此所有人都可以轻松地为这个答案做出贡献,因此没有人会因投票而获得声誉。

于 2013-06-25T12:06:21.757 回答
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());
    }
}
于 2020-08-24T22:52:11.593 回答
-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();
    }
}

}

于 2013-06-25T12:23:40.007 回答