我有2个ArrayList,我需要从某个起点在两者之间交换元素。

我当前的代码如下所示:

    List<Character> seq1 = new ArrayList<Character>(someArrayList);
    List<Character> seq2 = new ArrayList<Character>(someArrayList);
    List<Character> tmp1 = new ArrayList<Character>(someArrayList);
    List<Character> tmp2 = new ArrayList<Character>(someArrayList);

        for(int i = start1; i <= seq1.size()-1; i++){
            tmp1.set(i,seq2.get(i));
        }
        for(int i = start2; i <= seq2.size()-1; i++){
            tmp2.set(i,seq1.get(i));
        }
        for(int i = start1; i <= seq1.size()-1; i++){
            tmp1.set(i,seq2.get(i));
        }
        for(int i = start2; i <= seq2.size()-1; i++){
            tmp2.set(i,seq1.get(i));
        }


假设start1start2均为4

例如:

seq1: {A,A,A,A,B,B,B,B}

seq2: {A,A,A,A,C,C,C,C}


最终结果应为:

seq1:{A,A,A,A,C,C,C,C}

seq2:{A,A,A,A,B,B,B,B}


但是我的似乎仍在恢复其原始价值。
任何帮助是极大的赞赏。

最佳答案

对于集合,您将不需要任何临时交换变量或其他东西。只需替换值即可。

for(int i = start1, j = start2; i < seq1.size() && j < seq2.size(); i++, j++){
    seq1.set(i, seq2.set(j, seq1.get(i)));
}

10-04 10:12