Java 如何基于第一个元素同步ArrayList中的所有元素

Java 如何基于第一个元素同步ArrayList中的所有元素,java,arrays,arraylist,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.asLi

这是我到目前为止写的代码。但不知何故,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”数组列表一样,这样在所有情况下,最后的输出都是[1,2,3,4],我必须承认,我不知道这是为了什么,但它给出了预期的结果。 如果您需要其他/附加功能,请澄清您的问题

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()));
}
当然,您可以在一个步骤中比较两个列表,并在其中一个不相等时同时设置这两个列表-但这意味着c也会发生变化,如果只需要调整b,而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()));
}

b=新ArrayLista;c=新ArrayLista;。。。不太清楚你的具体要求是什么。数组大小是否相等?如果没有,你想用a中没有的元素做什么?我相信你想用b.seti,a.geti;如果索引i上的元素在3个数组中不相同,则在i到b处添加b[i],在i到c处添加c[i]。那没有任何意义。这对我来说没有意义。为什么你希望a、b和c彼此相等?并且列表的内容总是相同的?只是点了不同的菜?如果是这样,为什么不直接说ArrayList b=新ArrayList;等等?我们能在一个if条件下完成吗?如果有6个或7个ArrayList呢?您可以,但它会对列表进行不必要的更改。如果您有多个列表,则需要检查所有列表。我想你不能跳过一个。您可以使用循环,但我认为很难将其用于7或动态增加ArrayList所有ArrayList的ssize都是相同的,并且ArrayList的数量会动态增加。这两个是我的要求
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()));
}