private void select(int dataIndex, String[] resultList, int resultIndex, List<String[]> result) {
		int resultLen = resultList.length;
		int resultCount = resultIndex + 1;
		if (resultCount > resultLen) { // 全部选择完时，输出组合结果
			result.add(Arrays.copyOf(resultList, resultList.length));
			return;
		}

		// 递归选择下一个
		for (int i = dataIndex; i < datas.length + resultCount - resultLen; i++) {
			resultList[resultIndex] = datas[i];
			select(i + 1, resultList, resultIndex + 1, result);
		}
	}
private void select ( int dataIndex , String [ ] resultList , int resultIndex , List < String [ ] > result ) { int resultLen = resultList . length ; int resultCount = resultIndex + 1 ; if ( resultCount > resultLen ) { result . add ( Arrays . copyOf ( resultList , resultList . length ) ) ; return ; } for ( int i = dataIndex ; i < datas . length + resultCount - resultLen ; i ++ ) { resultList [ resultIndex ] = datas [ i ] ; select ( i + 1 , resultList , resultIndex + 1 , result ) ; } }
组合选择

@param dataList 待选列表
@param dataIndex 待选开始索引
@param resultList 前面（resultIndex-1）个的组合结果
@param resultIndex 选择索引，从0开始