【发布时间】:2018-08-25 20:20:32
【问题描述】:
我正在学习 Jjava,我在 ArrayLists 上发现了一个有趣的练习。目的是编写一个函数partition(),它接受一个参数list和一个参数size,并返回一个子列表列表,其中每个子列表有最大的size元素。
例如:
-
partition([1,2,3,4,5], 2)应该返回[ [1,2], [3,4], [5] ], -
partition([1,2,3,4,5], 3)应该返回[ [1,2,3], [4,5] ], -
partition([1,2,3,4,5], 1)应该返回[ [1], [2], [3], [4], [5] ]。
我这样做了,但它只有在参数 size 等于 1 时才有效,并且我想在所有情况下都这样做,如果有人可以帮助我,我正在努力。
public static void main(String[] args) {
Apside t = new Apside();
ArrayList<Integer> a = new ArrayList<Integer>();
a.add(1);
a.add(2);
a.add(3);
a.add(4);
System.out.println(t.partition(a, 1));
}
public ArrayList<ArrayList> partition(ArrayList<Integer> l, int n) {
ArrayList<ArrayList> al = new ArrayList();
for (int i = 0; i < n; i++) {
for (int j = 0; j < l.size(); j++) {
for(int k =0; k<n; k++){
ArrayList<Integer> list = new ArrayList(n);
int b = l.get(j);
list.add(b);
al.add(list);
}
}
}
return al;
}
【问题讨论】:
-
您有三个嵌套的
for循环。你能解释所有循环为什么它们是必要的吗?