获取列表中可用的每个项目的排列
Get permutations of each item available in list
List<String> list = new ArrayList<>();
list.add("MP");
list.add("Maharastra");
list.add("Karnataka");
我的要求是从上面的列表中得到所有可能的排列。
列表的预期输出是
[MP:Maharastra, MP:Karnataka, Maharastra:MP, Maharastra:Karnataka, Karnataka:MP, Karnataka:Maharastra]
目前我只在列表中添加了三个项目,但这个列表可以容纳任意数量的项目。
您可以使用嵌套循环将每个元素与 List
中除自身以外的所有其他元素配对。
List<String> result = new ArrayList<>();
for(int i = 0; i < list.size(); i++){
for(int j = 0; j < list.size(); j++){
if(i != j){
result.add(list.get(i) + ":" + list.get(j));
}
}
}
System.out.println(result);
有了Java8个流,就简单多了:
List<String> result = list.stream().flatMap(s -> list.stream().filter(t -> (Objects.nonNull(t)
&& !t.equalsIgnoreCase(s))).map(t -> s.concat(":").concat(t))).collect(Collectors.toList());
List<String> list = new ArrayList<>();
list.add("MP");
list.add("Maharastra");
list.add("Karnataka");
我的要求是从上面的列表中得到所有可能的排列。
列表的预期输出是
[MP:Maharastra, MP:Karnataka, Maharastra:MP, Maharastra:Karnataka, Karnataka:MP, Karnataka:Maharastra]
目前我只在列表中添加了三个项目,但这个列表可以容纳任意数量的项目。
您可以使用嵌套循环将每个元素与 List
中除自身以外的所有其他元素配对。
List<String> result = new ArrayList<>();
for(int i = 0; i < list.size(); i++){
for(int j = 0; j < list.size(); j++){
if(i != j){
result.add(list.get(i) + ":" + list.get(j));
}
}
}
System.out.println(result);
有了Java8个流,就简单多了:
List<String> result = list.stream().flatMap(s -> list.stream().filter(t -> (Objects.nonNull(t)
&& !t.equalsIgnoreCase(s))).map(t -> s.concat(":").concat(t))).collect(Collectors.toList());