我有一个元素列表。我想根据某些条件将此列表的元素分组为列表的列表。用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/