开发者社区> 问答> 正文

Java ArrayList.remove()

我想从对象中删除单词“ a”t1。为什么t2对象也受到影响?

package newproject;

import java.util.ArrayList; import java.util.Arrays;

public class NewProject {

public static void main(String[] args) {      
    String str[] = {"a", "b", "c"};
    ArrayList<String> words = new ArrayList<>();
    words.addAll(Arrays.asList(str));

    Test t1 = new Test(words);
    Test t2 = new Test(words);

    System.out.println("Result Before ");
    System.out.println("T1 " + t1.getWords());
    System.out.println("T2 " + t2.getWords());

    // Only T1 remove words, not T2
    t1.removeWords("a");

    System.out.println("Result After ");
    System.out.println("T1 " + t1.getWords());
    System.out.println("T2 " + t2.getWords());
}   

}

class Test { private ArrayList words;

Test(ArrayList<String> words){
    setWords(words);
}

void setWords(ArrayList words){ this.words = words; }

ArrayList <String> getWords() {
    return this.words;
}

void removeWords(String word) {
    this.words.remove(word);
}

}

展开
收起
小六码奴 2019-10-14 18:09:28 4911 0
2 条回答
写回答
取消 提交回答
  • 精于基础,广于工具,熟于业务。

    把t1,t2放进不同的arrayList就不会有这个问题了

    2019-10-15 09:33:44
    赞同 展开评论 打赏
  • 因为t1和t2共享相同的ArrayList。而不是将ArrayListin 传递给构造函数,构造函数this.words = new ArrayList ();以确保每个实例Test都有其自己的集合。

    2019-10-14 18:10:52
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
OpenCrypto Unchaining the Java 立即下载
Java Your(Next) 立即下载
Java8简明教...[fredwong].1494561200.pdf 立即下载