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

在java中同时初始化多个列表,java,list,Java,List,我正在尝试用Java初始化一个列表,但我想知道是否有一种更优雅的方法可以初始化具有相同类型的多个列表 到目前为止,我已经完成了以下工作: List<Model> list1 = new List<>(); List<Model> list2 = new List<>(); List<Model> list3 = new List<>(); List list1=新列表(); List list2=新

我正在尝试用Java初始化一个列表,但我想知道是否有一种更优雅的方法可以初始化具有相同类型的多个列表

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

    List<Model> list1 = new List<>();
    List<Model> list2 = new List<>();
    List<Model> list3 = new List<>();
List list1=新列表();
List list2=新列表();
List list3=新列表();
但是我试图初始化大约10个相同类型的不同列表,它看起来非常丑陋

我也尝试过这样做:

    List<Model> list1, list2, list3 = new List<>();
list1、list2、list3=新列表();
但这不起作用

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


这可能吗?

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

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

您可以使用
映射
,其中
表示列表名称,
表示
列表

Map<String,List<Model>> lists = new HashMap<>();
您可以使用以下方式访问列表:

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

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

这应该也可以

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

如果你有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(...)
List List=new ArrayList();

对于(inti=0;i,您可以做的最接近的事情是

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

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

< P>这是我的答案:

@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];
@SuppressWarnings({“unchecked”})
列表[]列表=新列表[3];
用于(列表:列表){
列表=新的ArrayList();
}
list1=列表[0];
列表2=列表[1];
List list3=列表[2];

<代码> >很好,你是如何做到的。“NIDHEGGER是的,我知道它是有效的,但我只是想问,是否有一种更优雅的方式来简化同一类型的提示的多个列表:对于初学者,考虑使用<代码> MAP<代码>,并在<<代码>中填充< < /Cult>循环>。LIST是一个接口,因此不能实例化它。需要向构造函数添加泛型,例如List list1、list2、list3=new ArrayList();
List
是抽象的,无法实例化。您必须使用
ArrayList
。检查我的答案。它是错别字;)现在已修复。@Binkassaryman您能解释一下原因吗?你愿意创建10个变量吗?我想问题是我不想把我的列表命名为1、2和3,我的理解是,如果我想把它命名为“listOne”,那么就命名为“listTwo”我必须检查一下哪个索引是最新的,以确定我想把它命名为asSee我在Tagi Valeevs postCan发表的评论被否决的选民请解释为什么被否决?我建议选民读一下这篇文章“:这是解决这个问题的最好和最简单的方法,除非你的列表有特定的含义,不应该被编入索引。@BinkanSalaryman人类更擅长记住名字。数字是电脑的。这就是为什么有效的变量名必须至少包含一个字符。这就是为什么Java使用布尔值而不是
1
0
。这就是为什么人们使用
Enum
。映射或列表在很大程度上取决于用例,在这里,它清楚地为我列出了。@BinkanSalaryman我无法反驳你的观点。你不应该和别人在一起。
@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];