获取列表中可用的每个项目的排列

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());