排列组合

package com.pnova.demo;

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

/**
 * 类名称:Range
 * 创建人:qian.long
 * 创建时间:2011-8-9 下午05:44:17
 * 修改人:qian.long
 * 修改时间:2011-8-9 下午05:44:17
 * 修改备注:
 * @version
 */
public class Range {
	
	public static void main(String[] args) {
		String[] a1 = new String[]{"38码", "39码"};
		String[] a2 = new String[]{"黑色", "白色"};
		String[] a3 = new String[]{"ys1001", "ys1002"};
		List<String[]> list = new ArrayList<String[]>();
		list.add(a1);
		list.add(a2);
		list.add(a3);
		List<String> rlist = new ArrayList<String>();
		rlist = Range.test(list, a1, "", rlist);
		for (String str : rlist) {
			System.out.println(str);
		}
	}

	/**
	 * 排列组合
	 * @Title: test 排列组合
	 * @Description: TODO 排列组合
	 * @param list 需要排列组合的数组list
	 * @param arr 第一个数组
	 * @param str 
	 * @param rlist 组合完的字符串list
	 * @return List<String>
	 * @author qian.long
	 */
	public static List<String> test(List<String[]> list, String[] arr, String str, List<String> rlist) {
		//迭代list 
		for(int i = 0; i < list.size(); i++) { 
			//取得当前的数组 
			if(i == list.indexOf(arr)) { 
				//迭代数组 
				for (int j = 0; j < arr.length; j++) {
					String st = arr[j].trim();
					if(i == 0) {
						st = str + st;
					} else {
						st = str + " " + st;
					}
					if(i < list.size() - 1) { 
						test(list, list.get(i + 1), st, rlist); 
					} else if(i == list.size() - 1) {
						rlist.add(st);
						//System.out.println(st); 
					} 
				} 
			}
		}
		return rlist;
	}
}
 

你可能感兴趣的:(组合)