繁体   English   中英

在 ArrayLists 之间交换元素

[英]Swapping out elements between ArrayLists

我有 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)));
}
    List<Character> seq1 = new ArrayList<Character>();
    List<Character> seq2 = new ArrayList<Character>();
    seq1.add('A');
    seq1.add('B');
    seq1.add('B');

    seq2.add('A');
    seq2.add('C');
    seq2.add('C');
    List<Character> tmp1 = new ArrayList<Character>(seq1);
    List<Character> tmp2 = new ArrayList<Character>(seq2);

        int start1 = 1, start2 = 1;
        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));
        }

   System.out.println(tmp1.toString());     
}

有用。

问题是您正在修改list tmp1 and tmp2 所以内容在临时列表中被修改。

而且您似乎正在尝试打印未由您的代码修改的原始列表

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM