dev*_*nai 8 java cartesian-product
我有一些ArrayList每个ArrayList都有对象,每个可以有不同的长度.我需要生成排列,如下例所示:
假设我有2个arraylist
arraylist A有对象a,对象b和对象c
arraylist B有对象d,对象e
那么输出应该是6个新的arraylist与这个组合:
组合1对象a和对象d,
组合2对象a和对象e,
组合3对象b和对象d,
组合4对象b和对象e,
组合5对象c和对象d,
组合6对象c和对象e,
谁能帮我?
Lists.cartesianProduct(List...)
Run Code Online (Sandbox Code Playgroud)
例如:
List<Object> list1 = Arrays.asList("a", "b", "c");
List<Object> list2 = Arrays.asList("d", "e");
System.out.println(Lists.cartesianProduct(list1, list2));
Run Code Online (Sandbox Code Playgroud)
输出:
[[a, d], [a, e], [b, d], [b, e], [c, d], [c, e]]
Run Code Online (Sandbox Code Playgroud)
随着Java8溪流
List<String> a = Arrays.asList("a", "b", "c");
List<String> b = Arrays.asList("d", "e");
String[][] AB = a.stream().flatMap(ai -> b.stream().map(bi -> new String[] { ai, bi })).toArray(String[][]::new);
System.out.println(Arrays.deepToString(AB));
Run Code Online (Sandbox Code Playgroud)
产量
[[a, d], [a, e], [b, d], [b, e], [c, d], [c, e]]
Run Code Online (Sandbox Code Playgroud)
得到的 List
List<List<String>> ll = a.stream().flatMap(ai -> b.stream().map(bi -> new ArrayList<>(Arrays.asList(ai, bi)))).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
使用嵌套的for循环,每个 ArrayList 都有一个循环,如下所示。我假设我有两个 ArrayList - intList 和 stringList。我可以有两个嵌套的for循环(每个列表一个)来生成排列。
for (Integer i : intList) {
for (String s : stringList) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6439 次 |
| 最近记录: |