gpt4 book ai didi

java - 如何在java中有效地读取一个巨大的文本文件并分割其内容以对其进行排序?

转载 作者:行者123 更新时间:2023-12-01 22:43:43 25 4
gpt4 key购买 nike

我有以下文本文件结构(大约 360741 KB):

123123123123,123123123,1,123123,123123,NAME1,LASTNAME1,LASTNAME2

由于我需要按名称对文件进行排序,因此我尝试将其放入 LinkedList 中,以便我更轻松地通过合并排序或快速排序等算法对其进行排序。

我遇到的问题是拆分每一行并将其放入 LinkedList 需要太长时间。

你们能给我建议一种更省时的替代方法吗?

我在做什么:

   try {
BufferedReader in = new BufferedReader(new FileReader("C:\\Users\\MyDirectory\\File.txt"));
String str;
LinkedList<Persona> li = new LinkedList();
while ((str = in.readLine()) != null) {
//System.out.println(str);
String[] array = str.split(",");

//Take the values from the array to create an instance of the class and place it in the LinkedList.
li.add(new Persona(array[0],array[1],array[2],array[3],array[4],array[5],array[6],array[7]));
//System.out.println(str);
}
System.out.println("fin");
in.close();
} catch (IOException e) {
System.out.println("File Read Error");
}

}

最佳答案

LinkedList 在内存方面并不是特别有效,并且对于内置排序算法没有好处。我建议您将每一行加载到数组列表中,并仅按名称拆分它(不是每个字段,因为您不需要拆分它们)

您可以使用 Collections.sort 和自定义比较器对 ArrayList 进行排序。

注意:您预计 352 MB 的文本将使用至少 1 GB 的内存,我建议为其提供 2-4 GB 的内存以提高性能。

关于java - 如何在java中有效地读取一个巨大的文本文件并分割其内容以对其进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25691617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com