什么是保存从文件中读取的字符串值列表的最佳java方法

时间:2014-05-28 19:30:58

标签: java file arraylist

我知道这是一个简单的问题,但我真的想知道是否有另一种方法来做,而不是使用ArrayList来保存所有的值。如果这是必要的,那么java类的设计应该是什么。

说我需要从5个文件中读取5个值列表。以前我只使用5个ArrayList来存储5个值列表。

public class Values{
 ArrayList<String> o1 = new ArrayList<String>();
 ArrayList<String> o2 = new ArrayList<String>();
 ArrayList<String> o3 = new ArrayList<String>();
 ...

 public void readFromFile(ArrayList<String> listName, String filePath){
   /*read file contents into list*/
 }

但我的问题是,每个可能包含超过2000个字符串值。这是一种合适的方法吗?如果是这样,那么它的设计会更好吗?

3 个答案:

答案 0 :(得分:2)

我认为使用ArrayLists完成此类任务会很好。我已经处理了一个大的数据集Tweets(也就是Twitter流数据)到5 GB和150万个推文。这不是一个问题。

如果遇到问题,可以随时增加堆大小。要意识到除非你真的需要创建和存储这么多的ArrayLists,否则你总是可以在中间处理后清除它们。

java -Xms2048M -Xmx4096M YourProgramName

我认为这可以让您了解如何设计程序。这里的想法是添加,处理,删除。对于我的情况,我只是解析,操纵推文,清除并继续前进。

enter image description here

答案 1 :(得分:0)

KISS

除非另外一个解决方案增强了您尝试完成的可测试性,可维护性,清晰度和简单性,否则请使用您拥有的内容。编写好的,干净的代码在开始时比编写高度优化,快速执行的代码要重要得多。干净的代码是以后很容易优化的代码。

答案 2 :(得分:0)

鉴于你真的需要在内存中拥有这些数据,ArrayList没有任何问题可以解决这个问题。具有2000个字符串,长度为80个字符的5个文件是5 * 2000 * 80 * 2个字节的字符数据+ 10000个String对象+ 5个ArrayList对象的一些开销,总共将使用少于1.7 MB的内存。没什么大不了的。

您应该更改声明并使用List而不是ArrayList,如下所示:

List<String> o1 = new ArrayList<String>();

通过这种方式,您可以使用LinkedList而不是ArrayList,而无需更改大部分代码。但只要您没有任何具体的理由使用其他东西,请继续使用ArrayList,这是最简单的解决方案。