同时在java中初始化多个列表

时间:2015-05-07 09:32:06

标签: java list

我试图用Java初始化List,但我想知道是否有更优雅的方法来初始化具有相同类型的多个列表。

到目前为止,我已完成以下工作:

    List<Model> list1 = new List<>();
    List<Model> list2 = new List<>();
    List<Model> list3 = new List<>();

但是我试图初始化大约10个相同类型的不同列表,看起来非常难看。

我也尝试过:

    List<Model> list1, list2, list3 = new List<>();

但这不起作用。

在搜索答案之后,我所能找到的是关于如何使用asList()方法在一行中使用多个变量初始化数组的提示,但这不是我尝试的方法做。

这甚至可能吗?

6 个答案:

答案 0 :(得分:3)

您可以使用Map key代表列表名称,value代表List

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

然后,您可以在for循环中填充列表:

for(int i=0;i<10;++i) {
    lists.put("list"+(i+1),new ArrayList<Model>());
}

您可以使用以下方式访问列表:

  lists.get("list1").add(new Model(...));
  lists.get("list2").add(new Model(...));

免责声明:我没有尝试编译此代码,因为我不在电脑上。

答案 1 :(得分:3)

如果您有10个列表或其他什么,那么就该考虑:可能您需要一个数组或列表列表。

List<List<Model>> lists = new ArrayList<>();
for(int i=0; i<10; i++) lists.add(new ArrayList<>());

// later in code instead of list5.add(...)    
lists.get(5).add(...)

答案 2 :(得分:2)

List是一个接口(抽象类型),无法实例化。您必须使用ArrayList,如下所示。你可以尝试:

List<Model> list1 = new ArrayList<Model>(), list2 = new ArrayList<Model>();

答案 3 :(得分:1)

这应该也适用

List<Model> list1 = new ArrayList<Model>(), list2 = new ArrayList<Model>(), list3 = new ArrayList<Model>();

答案 4 :(得分:0)

您可以做的最接近的事情是

List<Model> a = new ArrayList<>(), b = new ArrayList<>(), c = new ArrayList<>(), d = new ArrayList<>();

但是你考虑的任何一种方法都会产生相同的内存消耗影响。

答案 5 :(得分:0)

这是我的答案:

@SuppressWarnings({"unchecked"})
List<Model>[] lists = new List[3];
for(List list : lists) {
    list = new ArrayList<Model>();
}
List<Model> list1 = lists[0];
List<Model> list2 = lists[1];
List<Model> list3 = lists[2];