假設我有3個列表:['q','w'],['a','s'],['z','x']。如何從這些列表中獲取可能的組合列表?所以我得到一個清單[['q','a','z'],['q','s','z']]等等。我做的方法有兩個,但找不出一個N個清單:獲取列表元素的組合列表
static <E> ArrayList combine(ArrayList<E> one,ArrayList<E> two)
{
ArrayList<ArrayList<E>> combs=new ArrayList<ArrayList<E>>();
for(E e:one)
{
for(E e2:two)
{
ArrayList ps=new ArrayList();
ps.add(e);
ps.add(e2);
combs.add(ps);
}
}
return combs;
}
我發現,這是由番石榴的Sets.cartesianProduct完成。
你如何調用lists.subList?這不是一個數組嗎? – Alexiy
好點,這裏的所有代碼都是直接輸入的,所以需要進行一些調整。 :)使用http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#copyOfRange%28T[],%20int,%20int%29或只是傳遞完整的數組使用soFar.size()作爲數組的索引。 (第二種方法會更有效率)。 –