有一个List对象,其中包含了n个List,这n个List中由包含不同数量的某种对象,每个List中的对象数量最少有一个,最多不限,如下的树型结构:
RootList--
|_A List
|_A1
|_A2
|_B List
|_B1
|_B2
|_B3
|_C List
|_C1A List、B List、C List都是List,A1、A2、B1、B2、B3、C都是相同类的不同实例。
结果是从A List获取一个成员成员、从B List获取一个成员、从C List获取一个成员得到一个组合结果
这样不同下去,获得所有的组合,如上例子中的结果是:
A1 B1 C1
A1 B2 C1
A1 B3 C1
A2 B1 C1
A2 B2 C1
A2 B3 C1
谁能有好的算法得到这个结果集合。
RootList--
|_A List
|_A1
|_A2
|_B List
|_B1
|_B2
|_B3
|_C List
|_C1A List、B List、C List都是List,A1、A2、B1、B2、B3、C都是相同类的不同实例。
结果是从A List获取一个成员成员、从B List获取一个成员、从C List获取一个成员得到一个组合结果
这样不同下去,获得所有的组合,如上例子中的结果是:
A1 B1 C1
A1 B2 C1
A1 B3 C1
A2 B1 C1
A2 B2 C1
A2 B3 C1
谁能有好的算法得到这个结果集合。
解决方案 »
- ArrayList<Object[]>排序问题
- jsp 的 《select name="aa"》问如何修改他的宽度
- 经验收集:有价值的经验最少给5分,无上限,不够再加。。。
- jfreechart的问题 起点坐标和间隔相关的设定
- 请问Java和JBuilder及J2EE有什么区别?
- 请教问题,关于string的存储
- JDK 1.2在XP下需要配置吗?怎样配置呢?
- 如何把HTML中文字提取出来??高手请进
- jbuilder7.0遇到的问题
- 请问用VISUAL AGE FOR JAVA做应用程序那里有学习的资料,我找一个BUTTON的CLICK事件都很难呀
- 我想用JAVA中的Swing包实现窗体的置前与最小化,大大们帮忙呀,我也想要code,发给我呀~~
- 【诚招】上海JAVA开发工程师
import java.util.List;
public class Assembled {
public static void main(String[] args){
List a = new ArrayList();
a.add("A1");
a.add("A2");
List b = new ArrayList();
b.add("B1");
b.add("B2");
b.add("B3");
List c = new ArrayList();
c.add("C1");
for(int i=0;i<a.size();i++){
for(int j=0;j<b.size();j++){
for(int k=0;k<c.size();k++){
System.out.println( ""+(String)a.get(i)+" "+(String)b.get(j)+" "+(String)c.get(k) );
}
}
}
}
}
if(a.size()==1){
return (List) a.get(0);
}
List first=(List) a.get(0);
List left=getCombination(a.subList(1,a.size()));
List ret=new ArrayList();
for(int i=0;i<first.size();i++){
for(int j=0;j<left.size();j++){
ret.add(String.valueOf(first.get(i))+left.get(j));
}
}
return ret;
}使用递归很方便,不过数据不可以太大!