Java 如何另存为ArrayList<;字符串>;,字符串中一组字符的所有可能组合?

Java 如何另存为ArrayList<;字符串>;,字符串中一组字符的所有可能组合?,java,Java,如何将字符串中一组字符的所有可能组合保存为ArrayList 你可以在下面看到我的代码。它只打印组合,但不保存所有组合。有什么想法吗 public class All_Possible_Combinatons { static String combinations(char[] sequence, char[] data, int start, int end, int index, int r) { if (index == r) {

如何将字符串中一组字符的所有可能组合保存为ArrayList

你可以在下面看到我的代码。它只打印组合,但不保存所有组合。有什么想法吗

public class All_Possible_Combinatons 
{

static String combinations(char[] sequence, char[] data, int start, int end,
        int index, int r) 
{   

    if (index == r) 
    {
        for (int j = 0; j < r; j++)
            // = data[j];
            System.out.print(data[j] + " ");
        System.out.println();
    }

    for (int i = start; i <= end && ((end - i + 1) >= (r - index)); i++) 
    {
        data[index] = sequence[i];
        combinations(sequence, data, i + 1, end, index + 1, r);
    }
    return null;

}

public static void main(String args[]) 
{
    char[] sequence = { '0','1','2'/*,'3','4','5','6','7','8','9',':',';','<','=','>','?','@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','[',']','^','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z' */};
    System.out.print("The combinations are: ");


  // printCombinations(sequence, sequence.length);

    int N=sequence.length;
    char[] data = new char[N];
    for (int r = 0; r < sequence.length; r++)
        combinations(sequence, data, 0, N - 1, 0, r);
}
公共类所有可能的组合
{
静态字符串组合(char[]序列、char[]数据、int start、int end、,
整数索引,整数r)
{   
如果(索引==r)
{
对于(int j=0;j
这可能不是最有效的方法,但请尝试一下:

List<String> list = new ArrayList<>();
    int[] a = {0,1,2};
    for(int i: a){
        list.add(i+"");
    }
    for(int times = 0; times < a.length; times++){
        String first = a[times]+"";

        for(int i = 0; i< a.length; i++){
            String temp = first + i;
            list.add(temp);
        }
    }
    for(String s: list){
        System.out.print(s + " ");
    }

使用当前方法。您需要切换方法以正确完成此操作

我尝试使用您当前的方法

import java.util.ArrayList;
导入java.util.List;
公共类JavaApplication47
{
公共静态void main(字符串[]args)
{
[3,”5,“6”,“7,”7,”,”7,“7,”7,”,”,”,”7,“7,“8,”,”,”,”7,“7,”,”,”7,“8,”,”,”,”8,“9,”,”,”,”7,”,”,”,”,”,”,”,”9,”,”,”,”,”,”,”他们,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,‘D’、‘E’、‘F’、‘G’、‘H’、‘I’、‘J’、‘K’、‘L’、‘M’、‘N’、‘O’、‘P’、‘Q’、‘R’、‘S’、‘T’、‘U’、‘V’、‘W’、‘X’、‘Y’、‘Z’*/};
系统输出打印(“组合为:”);
//打印组合(顺序、顺序、长度);
列表=新的ArrayList();
int N=序列长度;
字符[]数据=新字符[N];

对于(int r=0;r您需要在arraylist或数字中存储字符吗?@Blasanka无所谓。两者都将转换为字符串。
'1'
1
都将成为
“1”
。好的。谢谢!我也考虑过了。您的代码正确吗?我运行了它,没有得到1、2、3的组合。好的,我更改了
(int r=0;rfor(int r=0;r)这项工作,但不太好。因为像这样保存:1 2 0 1 0 2 1 2你说像这样保存是什么意思?我想要这个数组列表:'0','1','2','00','01','02','10','11','12','20','21','22',…但是你的代码给出了:'0','1','2','0','0','0','01','1'。。。。
0 1 2 00 01 02 10 11 12 20 21 22 
import java.util.ArrayList;
import java.util.List;

public class JavaApplication47
{
    public static void main(String[] args)
    {
        char[] sequence = { '0','1','2'/*,'3','4','5','6','7','8','9',':',';','<','=','>','?','@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','[',']','^','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z' */};

        System.out.print("The combinations are: ");


        // printCombinations(sequence, sequence.length);
        List<String> list = new ArrayList();

        int N=sequence.length;
        char[] data = new char[N];
        for (int r = 0; r <= sequence.length; r++)
        {
            list.add(combinations(sequence, data, 0, N - 1, 0, r));
        }

        System.out.println(list.size());
        for (String combo : list)
        {
            System.out.println(combo);
        }
    }

    static String combinations(char[] sequence, char[] data, int start, int end, int index, int r) 
    {
        StringBuilder stringbuilder = new StringBuilder();
        if (index == r) 
        {       
            StringBuilder stringbuilder2 = new StringBuilder();

            for (int j = 0; j < r; j++)
            {
                //System.out.print(data[j] + " ");
                stringbuilder2.append(data[j]).append(" ");
            }
            //System.out.println();
            return stringbuilder2.append(" - ").toString();
        }

        for (int i = start; i <= end && ((end - i + 1) >= (r - index)); i++) 
        {
            data[index] = sequence[i];
            stringbuilder.append(combinations(sequence, data, i + 1, end, index + 1, r));
        }
        return stringbuilder.toString();

    }

}
import java.util.ArrayList;
import java.util.List;

public class JavaApplication47
{
    public static void main(String[] args)
    {
        char[] sequence = { '0','1','2'/*,'3','4','5','6','7','8','9',':',';','<','=','>','?','@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','[',']','^','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z' */};

        System.out.print("The combinations are: ");


        // printCombinations(sequence, sequence.length);
        List<String> list = new ArrayList();

        int N=sequence.length;
        char[] data = new char[N];
        for (int r = 0; r <= sequence.length; r++)
        {
            list.addAll(combinations(sequence, data, 0, N - 1, 0, r));
        }


        for (String combo : list)
        {
            System.out.println(combo);
        }
        System.out.println("list size: " + list.size());
    }

    static List<String> combinations(char[] sequence, char[] data, int start, int end, int index, int r) 
    {
        List<String> list = new ArrayList();
        if (index == r) 
        {      
            List<String> tempList = new ArrayList();
            StringBuilder stringbuilder2 = new StringBuilder();

            for (int j = 0; j < r; j++)
            {
                stringbuilder2.append(data[j]).append(" ");
            }

            tempList.add(stringbuilder2.toString());
            return tempList;
        }

        for (int i = start; i <= end && ((end - i + 1) >= (r - index)); i++) 
        {
            data[index] = sequence[i];
            list.addAll(combinations(sequence, data, i + 1, end, index + 1, r));
        }
        return list;

    }

}