日期:2014-05-20  浏览次数:20709 次

求一个从不同集合中组合数据的算法?
比如有三个独立的列表
ArrayList<String> arr1={我,你,他};
ArrayList<String> arr2={想,不想};
ArrayList<String> arr3={摸摸你,亲亲你,闻闻你};

我的结果能出来的ArrayList<String> arrresult 数据有 3x2x3=18个,
就是在三个列表中,每一个都出来一个内容组合成一个新的内容,最后的值为:
arrresult.get[0] = 我想摸摸你;
arrresult.get[1] = 我不想摸摸你;
arrresult.get[2] = 我想亲亲你;
arrresult.get[3] = 我不想亲亲你;
。。。。。。
arrresult.get[15] = 他不想闻闻你;

出来的数据的排序顺序不要紧,只要出来这15个组合结果就OK了。


------解决方案--------------------
Java code

import java.util.ArrayList;

public class NewClass {

    static ArrayList<String> array0 = new ArrayList<String>();
    static ArrayList<String> array1 = new ArrayList<String>();
    static ArrayList<String> array2 = new ArrayList<String>();

    public static ArrayList<String> test(ArrayList<String> array1, ArrayList<String> array2) {
        ArrayList<String> array0 = new ArrayList<String>();
        for (String s : array1) {
            for (String ss : array2) {
                array0.add(s + ss);
            }
        }
        return array0;
    }

    public static void main(String[] args) {
        array0.add("我");
        array0.add("你");
        array0.add("他");

        array1.add("想");
        array1.add("不想");

        array2.add("摸摸你");
        array2.add("亲亲你");
        array2.add("闻闻你");

        for (String s : test(test(array0, array1), array2)) {
            System.out.println(s);
        }
    }
}

------解决方案--------------------
Java code

import java.util.*;

public class Test
{
    public static void main(String[] args)
    {
        ArrayList<String> arr1 = new ArrayList<String>();
        arr1.add("我");
        arr1.add("你");
        arr1.add("他");
        ArrayList<String> arr2 = new ArrayList<String>();
        arr2.add("想");
        arr2.add("不想");
        ArrayList<String> arr3 = new ArrayList<String>();
        arr3.add("摸摸你");
        arr3.add("亲亲你");
        arr3.add("闻闻你");
        
        ArrayList<String> arrresult = new ArrayList<String>();
        for (String str1 : arr1)
            for (String str2 : arr2)
                for (String str3 : arr3)
                    arrresult.add(str1 + str2 + str3);
        for (String str : arrresult)
            System.out.println(str);
    }
}