使用java从文件加载带有嵌套arraylist的arraylist

xtfmy6hx  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(475)

我有一个数组列表 ArrayList<ArrayList<String>> . 我已使用以下代码将主arraylist保存在文本文件中。

ArrayList<ArrayList<String>> ar2 = new ArrayList<>();
 FileWriter writer = new FileWriter("path/to/the/text/file");
        for(ArrayList<String> str: ar2) {
            writer.write(str + System.lineSeparator());

        }
        writer.close();

现在,我想将保存的数据从文件加载到 ArrayList ar2 在每一次新的跑步中。我尝试了几种方法,但是嵌套的ArrayList是作为字符串加载的。如何克服这个问题?

ovfsdjhp

ovfsdjhp1#

读取文件内容,按行分隔符拆分,然后移除方括号并再次拆分以获取列表项。像这样的

File file = new File("path/to/the/text/file");
FileReader reader = new FileReader(file);

char[] chars = new char[(int) file.length()];
reader.read(chars);

String fileContent = new String(chars);
ArrayList<ArrayList<String>> readList = new ArrayList<>();

String[] splittedArr = fileContent.split(System.lineSeparator());
for(String list : splittedArr) {
    list = list.replace("[", "").replace("]", ""); //removing brackets as the file will have list as [a, b, c]
    List<String> asList = Arrays.asList(list.split(", "));//splitting the elements by comma and space
    readList.add(new ArrayList<>(asList));
}
reader.close();
6mw9ycah

6mw9ycah2#

您可以解析字符串并使用迭代将其转换为数组,也可以使用一个库来为您完成这项工作。
我建议使用Jackson,你可以在这里找到一个简单的教程。

相关问题