如何列出java中可能的字符串组合值?

如何列出java中可能的字符串组合值?,java,string,arraylist,combinations,Java,String,Arraylist,Combinations,我有一个arrayList List value = new ArrayList(); 此arraylist的值为={a,b,c,d} 我需要使用此arraylist组合字符串 所需输出:abcd、bcd、acd、abd、abc、cd、bd、bc、ad、ac、ab、a、b、c、d、null 如果可能的话?那么请给我发代码 这是我的代码,但不是完美的工作 import java.util.ArrayList; import java.util.List; public class Possibl

我有一个arrayList

List value = new ArrayList();
此arraylist的值为={a,b,c,d}

我需要使用此arraylist组合字符串

所需输出:abcd、bcd、acd、abd、abc、cd、bd、bc、ad、ac、ab、a、b、c、d、null

如果可能的话?那么请给我发代码

这是我的代码,但不是完美的工作

import java.util.ArrayList;
import java.util.List;
public class PossibleCombination {

public static void main(String[] args) {




    List segList = new ArrayList();
    for(int i=65;i<70;i++){
        segList.add((char)i);

    }
    int segSize = segList.size();
    int[][] a = new int[segSize][2];
    int i;

    for(i=0; i<= segSize-1; i++)
    {

        a[i][0] = 0;
        a[i][1] = 1;

    }

    boolean b1 = true;
        int t =0;
    while(b1)
    {
        StringBuffer stb = new StringBuffer();
        for(i=0;i<segSize; i++)
        {
            if(a[i][0]==0)
            stb.append(segList.get(i));
        }

        System.out.println(stb);

        if(t>=a.length){
            t=0;
        }
        int Pos=t;
        while(a[Pos][0]>=a[Pos][1])
        {
            if(Pos<segSize-1)
                Pos++;
            else
                break;
        }
        a[Pos][0]++;
        Pos--;
        while(Pos>=0)
        {
            if(a[Pos][0]>0)
            {
                a[Pos][0]--;
                break;
            }
            Pos--;
        }
        t++;

        if(a[segSize-1][0]> a[segSize-1][1]){
            b1 = false;
        }
    }
}
import java.util.ArrayList;
导入java.util.List;
公共类可能组合{
公共静态void main(字符串[]args){
List segList=new ArrayList();
对于(int i=65;i0)
{
a[Pos][0]-;
打破
}
Pos--;
}
t++;
如果(a[segSize-1][0]>a[segSize-1][1]){
b1=假;
}
}
}

}是的,这是绝对可能的。然而,这当然需要指数时间

我将把实际实现留给您,但这里有一些提示

实现这一点最简单的方法是递归,但这将很快占用大量堆栈空间

另一种方法是先呼吸,然后扩展结果列表。这可以通过FIFO队列迭代完成。

List value=new ArrayList();
List<String[]> value = new ArrayList<String[]>();
String[] item = {"a","b","c"};
value.add(item);
字符串[]项={“a”、“b”、“c”}; 增值(项目);
是!当然是!现在,我们可以帮助您,您尝试过什么?请分享您迄今为止尝试过的代码。请自己思考如何做到这一点,编写一些代码,如果您无法解决问题,请向我们展示您的代码并提出问题。人们不会为你做家庭作业,那样你就什么也学不到了。谢谢Syd Kerckhove..但我需要一个简单易用的代码