Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将两个或多个字符串数组列表排列组合成一个组合列表_Java_String_Combinations_Permutation - Fatal编程技术网

Java 如何将两个或多个字符串数组列表排列组合成一个组合列表

Java 如何将两个或多个字符串数组列表排列组合成一个组合列表,java,string,combinations,permutation,Java,String,Combinations,Permutation,我想得到多字符串arraylist的所有组合 String arr1[]={"red","green"} String arr2[]={"underline"} ArrayList a=get_Combination(arr1,arr2) 输入: array 1=["red","green","blue"]. array 2=["bold"]. array 3=["underline"].` 输出: 组合列表应该如下所示 [[red],[red,bold],[red,bold,underli

我想得到多字符串arraylist的所有组合

String arr1[]={"red","green"}
String arr2[]={"underline"}
ArrayList a=get_Combination(arr1,arr2)
输入:

array 1=["red","green","blue"].
array 2=["bold"].
array 3=["underline"].`
输出: 组合列表应该如下所示

[[red],[red,bold],[red,bold,underline],[underline],[underline,bold].......]
这是你想要的吗

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

public class Combin {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        final String[][] array = new String[][] {
            new String[] {"red","green","blue"}
            , new String[] {"bold"}
            , new String[] {"underline"}
        };

        final List<String> list = combination(Arrays.asList(array));

        list.stream()
        .forEach(
            System.out::println
        )
        ;
    }

    static List<String> combination(
            final List<String[]> array)
    {
        if(array == null || array.size() < 1) {
            return Collections.<String>emptyList();
        }

        if(array.size() == 1) {
            return Arrays.stream(array.get(0))
                    .collect(Collectors.toList())
                    ;
        }

        if(array.size() == 2) {
            List<String> list1 = Arrays.stream(array.get(0))
                                .collect(Collectors.toList())
                                ;

            List<String> list2 = Arrays.stream(array.get(1))
                                .collect(Collectors.toList())
                                ;

            final List<String> list3 = new ArrayList<>();
            list1.stream()
            .forEach(
                s1 -> {
                    list2.stream()
                    .forEach(
                        s2 -> {
                            list3.add(s1 + ", " + s2);
                        }
                    );
                }
            )
            ;

            final List<String> list = new ArrayList<>();
            list.addAll(list1);
            list.addAll(list2);
            list.addAll(list3);

            return list;
        }

        //length > 2
        List<String> list = combination(array.subList(0, 2));

        for(int i=2; i<array.size(); i++) {
            List<String[]> newArrayList = new ArrayList<>();
            newArrayList.add(list.toArray(new String[list.size()]));
            newArrayList.add(array.get(i));

            list = combination(newArrayList);
        }

        return list;

    }
}

还请输入您试图获得理想输出的代码?它是失败的还是部分有效的?最好看看你的第一个方法,以帮助你提高它谢谢你!!但是,在android studio中,流函数需要至少24个api级别,还有其他方法吗?非常感谢您的帮助,尽管这正是我在寻找的stream forEach输出,将其更改为for循环,将流数组更改为list,只需自己将数组转换为list,请自己尝试
red
green
blue
bold
red, bold
green, bold
blue, bold
underline
red, underline
green, underline
blue, underline
bold, underline
red, bold, underline
green, bold, underline
blue, bold, underline