如何基于第一个同步数组列表中的所有元素

时间:2019-02-21 12:05:10

标签: java arrays arraylist

这是我到目前为止编写的代码。但是不知何故,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]

1 个答案:

答案 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()));
}