java - java中列表列表中的组列表元素

标签 java list arraylist collections

我有一个元素列表。我想根据某些条件将此列表的元素分组为列表的列表。用java可以轻松实现吗?

public class CollectionTest {

    public static void main(String[] arg) {
        Target target0 = new Target();
        target0.setRisklevel("III");
        target0.setLocation("Combined");
        Target target1 = new Target();
        target1.setRisklevel("III");
        target1.setLocation("Combined");
        Target target2 = new Target();
        target2.setRisklevel("III");
        target2.setLocation("Combined");
        Target target3 = new Target();
        target3.setRisklevel("III");
        target3.setLocation("Combined");
        Target target4 = new Target();
        target4.setRisklevel("IV");
        target4.setLocation("Combined");
        Target target5 = new Target();
        target5.setRisklevel("IV");
        target5.setLocation("Combined");
        Target target6 = new Target();
        target6.setRisklevel("IV");
        target6.setLocation("Combined");
        Target target7 = new Target();
        target7.setRisklevel("II");
        target7.setLocation("Domestic");
        Target target8 = new Target();
        target8.setRisklevel("IV");
        target8.setLocation("Domestic");
        Target target9 = new Target();
        target9.setRisklevel("IV");
        target9.setLocation("Domestic");
        Target target10 = new Target();
        target10.setRisklevel("IV");
        target10.setLocation("Domestic");
        Target target11 = new Target();
        target11.setRisklevel("IV");
        target11.setLocation("Domestic");

        List<Target> ucrtargetList = new ArrayList<Target>();
        ucrtargetList.add(target0);
        ucrtargetList.add(target1);
        ucrtargetList.add(target2);
        ucrtargetList.add(target3);
        ucrtargetList.add(target4);
        ucrtargetList.add(target5);
        ucrtargetList.add(target6);
        ucrtargetList.add(target7);
        ucrtargetList.add(target8);
        ucrtargetList.add(target9);
        ucrtargetList.add(target10);
        ucrtargetList.add(target11);
        List<List<Target>> fullList = new ArrayList<List<Target>>();
    }
}

这里的条件是列表列表中每个列表中的风险级别和位置必须相同。因此 fullList 中应该有 4 个列表(第 1 个 III 和组合、第 2 个 IV 和组合、第 3 个 II 和国内、第 4 个 IV 和国内)。

我可以循环遍历列表并设置值。有没有更简单的方法可以使用 java8 或 apache commons 来做到这一点?

最佳答案

尚无法发表评论,因此添加一个答案,以扩展 @Schidu Luca 的回复,“groupingBy”子句可以链接起来,如下所示

Map<String, List<Target>> collect = ucrtargetList.stream()
           .collect(Collectors.groupingBy(Target::getRisklevel, Collectors.groupingBy(Target::getLocation)));

关于java - java中列表列表中的组列表元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52925450/

相关文章:

java - 将从 HTTPClient 检索到的数据用于 JSoup

java - 用Java swing画一个简单的圆不起作用

java - 字符串分割及数据返回问题

java - 显示本地文件依赖

Python追加: It only return the last value repeatedly

java - 使用扫描仪输入实例化变量后执行停止

Java 通用矩阵创建

java - 将子类对象列表传递给以父类(super class)列表作为参数的方法

list - 如何在没有工作的情况下获得所有 Pod

java - 如何对数组列表的成员执行instanceof 操作?