假设我有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()作为数组的索引。 (第二种方法会更有效率)。 –