这是我到目前为止编写的代码。但是不知何故,arrayList的大小也在增加。
ArrayList<Integer> a = new ArrayList<>(Arrays.asList(1,2,3,4));
ArrayList<Integer> b = new ArrayList<>(Arrays.asList(1,3,2,4));
ArrayList<Integer> c = new ArrayList<>(Arrays.asList(4,2,3,1));
for(int i = 0; i < a.size(); i++){
if(!a.get(i).equals(b.get(i))){
if(!b.get(i).equals(c.get(i))){
b.add(a.get(i), b.get(i));
c.add(a.get(i), c.get(i));
}
}
}
我希望将数组列表'b'和'c'与元素顺序同步,例如在'a'arrayList中,这样最后在所有情况下输出均为[1,2,3,4]
答案 0 :(得分:3)
我不得不承认,我不知道这样做的目的是什么,但是它可以带来预期的结果。 如果您需要其他功能/其他功能,请澄清您的问题。
public static void main(String[] args) {
ArrayList<Integer> a = new ArrayList<>(Arrays.asList(1, 2, 3, 4));
ArrayList<Integer> b = new ArrayList<>(Arrays.asList(1, 3, 2, 4));
ArrayList<Integer> c = new ArrayList<>(Arrays.asList(4, 2, 3, 1));
for (int i = 0; i < a.size(); i++) {
if (!a.get(i).equals(b.get(i))) {
b.set(i, a.get(i));
}
if (!a.get(i).equals(c.get(i))) {
c.set(i, a.get(i));
}
}
System.err.println(Arrays.toString(b.toArray()));
System.err.println(Arrays.toString(c.toArray()));
}
输出:
[1, 2, 3, 4]
[1, 2, 3, 4]
当然,您可以一步比较两个列表,如果两个列表不相等,则可以同时设置两个列表-但这意味着如果只需要调整b且c并不是真的,那么c也会被更改(这不会造成伤害):
public static void main(String[] args) {
ArrayList<Integer> a = new ArrayList<>(Arrays.asList(1, 2, 3, 4));
ArrayList<Integer> b = new ArrayList<>(Arrays.asList(1, 3, 2, 4));
ArrayList<Integer> c = new ArrayList<>(Arrays.asList(4, 2, 3, 1));
for (int i = 0; i < a.size(); i++) {
if ((!a.get(i).equals(b.get(i))) || (!a.get(i).equals(c.get(i)))) {
b.set(i, a.get(i));
c.set(i, a.get(i));
}
}
System.err.println(Arrays.toString(b.toArray()));
System.err.println(Arrays.toString(c.toArray()));
}