有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

数据结构java中赋值运算符和addAll之间的区别是什么?

我想知道与一本书有关的一个固定章节的问题

    Set<String> mySet = new HashSet<>();

    mySet.add("red");
    mySet.add("blue");
    mySet.add("pink");
    mySet.add("black");

    //first presentation

    Set<String> newSetFirst = new HashSet<>();
    newSetSirst.addAll(mySet);

    //second presentation

    Set<String> newSetTwo;
    newSetTwo = mySet;

第一次演讲和第二次演讲有什么区别

这是什么意思。addAll(mySet)

newSetTwo=mySet是什么意思


共 (2) 个答案

  1. # 1 楼答案

    第一次演示:

    Set<String> newSetFirst = new HashSet<>();
    newSetFirst.addAll(mySet);
    
    System.out.println(newSetFirst);  // Prints ["red", "blue", "pink", "black"]
    
    mySet.clear();
    
    System.out.println(newSetFirst);  // Prints ["red", "blue", "pink", "black"]
    

    当你addAll时,你只是把所有的东西都添加到一个现有的集合中。对添加自的集合的更新不会反映在该集合中,因为它是完全独立的


    第二次演示:

    Set<String> newSetTwo;
    newSetTwo = mySet;
    
    System.out.println(newSetTwo);  // Prints ["red", "blue", "pink", "black"]
    
    mySet.clear();
    
    System.out.println(newSetTwo);  // Prints []
    

    当你赋值时,你只是给自己另一个变量,它指向同一个列表mySet == newSetTwo是真的:只有一套。因此,改变mySet也会改变newSetTwo

  2. # 2 楼答案

    第一个演示文稿创建一个新列表,并将第一个列表中的每个项目添加到该列表中。 如果你更改了mySetFirst列表中的一项,mySet列表将不会更改

    第二个演示指向mySet的引用。如果你在newSetTwo中更改了一个项目,该项目也会在mySet中更改。在这种情况下,mySet和newSetTwo是同一个列表