Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将列表拆分为子列表_Java_List - Fatal编程技术网

Java 如何将列表拆分为子列表

Java 如何将列表拆分为子列表,java,list,Java,List,不幸的是,我使用的是Java7,所以我不能使用Java8的任何功能 我有以下枚举: public enum Type { MAILING, RESEPT, CURRENT, //... USER } 以及该类型的类容器: public class Container { public Type getType() { // Impl } } 现在我有一些列表。如何将其拆分为列表,以便列表中的任何列表只包含具有相同

不幸的是,我使用的是Java7,所以我不能使用Java8的任何功能

我有以下枚举:

public enum Type
{
    MAILING,
    RESEPT,
    CURRENT,
    //...
    USER
}
以及该类型的类容器:

public class Container
{
    public Type getType()
    {
        // Impl
    }
}

现在我有一些
列表
。如何将其拆分为
列表
,以便
列表
中的任何
列表
只包含具有相同
getType()

容器
如果您有Java8,则可以使用
-API的
收集器。groupingBy(…)
。然后返回一个
映射。然后您可以循环映射的值并将其放入列表中。

如果您有Java 8,您可以使用
-API的
收集器。groupingBy(…)
。然后返回一个
映射。然后,您可以循环映射的值并将其放入列表中。

对于Java 7,我建议循环遍历枚举
values()

List completeList=new ArrayList();
List splitList=new ArrayList();
对于(类型:Type.values()){
List containerTypeList=新建ArrayList();
for(容器c:completeList){
if(c.getType().equals(type)){
containerTypeList.add(c);
}
}
添加(containerTypeList);
}

对于Java 7,我建议循环遍历枚举
值()

List completeList=new ArrayList();
List splitList=new ArrayList();
对于(类型:Type.values()){
List containerTypeList=新建ArrayList();
for(容器c:completeList){
if(c.getType().equals(type)){
containerTypeList.add(c);
}
}
添加(containerTypeList);
}

这里有一个稍微不同的Java 7方法:

List<Container> containers = new ArrayList<>();

containers.add(/* ... */);
containers.add(/* ... */);
containers.add(/* ... */);
containers.add(/* ... */);
containers.add(/* ... */);
containers.add(/* ... */);

Map<Type, List<Container>> split = new HashMap<>();

for (Container container : containers) {
    if (!split.containsKey(container.getType())) {
        split.put(container.getType(), new ArrayList<Container>());
    }
    split.get(container.getType()).add(container);
}

List<List<Container>> listOfLists = new ArrayList<>(split.values());
List containers=new ArrayList();
容器。添加(/*…*/);
容器。添加(/*…*/);
容器。添加(/*…*/);
容器。添加(/*…*/);
容器。添加(/*…*/);
容器。添加(/*…*/);
Map split=newhashmap();
用于(容器:容器){
如果(!split.containsKey(container.getType())){
split.put(container.getType(),newArrayList());
}
split.get(container.getType()).add(container);
}
List listOfLists=新的ArrayList(split.values());

这里有一个稍微不同的Java 7方法:

List<Container> containers = new ArrayList<>();

containers.add(/* ... */);
containers.add(/* ... */);
containers.add(/* ... */);
containers.add(/* ... */);
containers.add(/* ... */);
containers.add(/* ... */);

Map<Type, List<Container>> split = new HashMap<>();

for (Container container : containers) {
    if (!split.containsKey(container.getType())) {
        split.put(container.getType(), new ArrayList<Container>());
    }
    split.get(container.getType()).add(container);
}

List<List<Container>> listOfLists = new ArrayList<>(split.values());
List containers=new ArrayList();
容器。添加(/*…*/);
容器。添加(/*…*/);
容器。添加(/*…*/);
容器。添加(/*…*/);
容器。添加(/*…*/);
容器。添加(/*…*/);
Map split=newhashmap();
用于(容器:容器){
如果(!split.containsKey(container.getType())){
split.put(container.getType(),newArrayList());
}
split.get(container.getType()).add(container);
}
List listOfLists=新的ArrayList(split.values());

很抱歉,我没有指定这些重要信息。我仍然在使用Java 7。我很抱歉没有指定那些重要的信息。我仍然在Java 7中,是否有一些Java注意,Map不包含contains方法。您可能是指containsKey()。谢谢,已更新。我并没有实际测试这个:-)@St.Antario只是一个注释-如果你使用的是番石榴(也许,从你对另一个答案的评论来看),你可以使用一个多重映射,它去掉了一些样板代码。一个注释是,Map不包含contains方法。您可能是指containsKey()。谢谢,已更新。我并没有实际测试:-)@St.Antario只是一个注释-如果你使用的是番石榴(也许,从你对另一个答案的评论来看),你可以使用一个多重映射,它去掉了一些样板代码。