1

我有一个场景,我必须在 java 应用程序中处理多个数据列表......现在每个列表中可以包含任意数量的元素......此外,这些列表的数量最初也不知道......

哪种方法最适合我的情况?我可以想到列表的arraylist,或者列表的列表或arraylist的列表等(即arraylist + list/arraylist+arraylist/list+list的组合)......我想知道的是 -

(1) 以上哪一项(或您自己的解决方案)最容易管理——即存储/获取数据 (2) 以上哪一项将使用最少的内存?

4

3 回答 3

1

我将我的变量声明为:

List<List<DataType>> lists = new ArrayList<List<DataType>>();

通过接口类型的变量访问列表方法会有一点时间损失,但我认为,这完全可以与您根据需要更改类型的灵活性相平衡。(例如,如果您决定将其设为lists不可变,则可以通过 中的一种方法来实现java.util.Collections,但如果您已将其声明为ArrayList<List<DataType>>.)

请注意,lists必须保存一些实现的具体类的实例List<DataType>,因为(正如其他人所指出的)List是一个接口,而不是一个类。

于 2012-09-06T20:15:58.360 回答
0

List是一个接口。ArrayList是 的一种实现List

当您构造a时List,您必须选择特定的具体类型(例如ArrayList)。当您使用列表时,如果可能,最好针对界面进行编程。这可以防止您的代码和特定List实现之间的紧密耦合,List如果您愿意,您以后可以更轻松地更改为另一个实现。

于 2012-09-06T20:12:40.887 回答
0

如果您知道一种方法来确定您将处理哪个列表,请使用列表映射。

Map<String,List<?>> = new HashMap<String,List<?>>();

这样,您就可以避免必须遍历外部元素才能到达实际列表。哈希映射比迭代器执行得更好。

于 2012-09-06T20:52:03.713 回答