Java 清除温度设置时,二维设置已清除

Java 清除温度设置时,二维设置已清除,java,set,Java,Set,正如这张照片所示,它什么也没打印出来。。 试图向set1添加新的set元素,但一旦我清除temp set2,它也会清除set1。 这是因为当我将set2添加到set1时,它只是将set2的地址添加到其中,而不是实际值 Set<Set<Integer>> set1 = new HashSet<>(); Set<Integer> set2 = new HashSet<>(); set2.add(1); set2.ad

正如这张照片所示,它什么也没打印出来。。 试图向set1添加新的set元素,但一旦我清除temp set2,它也会清除set1。 这是因为当我将set2添加到set1时,它只是将set2的地址添加到其中,而不是实际值

   Set<Set<Integer>> set1 = new HashSet<>();
   Set<Integer> set2 = new HashSet<>();
   set2.add(1);
   set2.add(1);
   set2.add(2);
   set1.add(set2);
   set2.clear();
   p.pp(set1);//print out 2-D set
   p.p(set2);//print out 1-D set

谢谢大家的评论。明白了,当我想向二维集合添加另一个集合时,我必须创建新集合,不能修改旧集合并再次使用。

我没有看到任何打印语句。请提供一个。什么图片???这是因为当我将set2添加到set1时,只是将set2的地址添加到其中,而不是实际值?差不多。也称为引用。这是因为您对HashSet集合1中的对象集合2进行了更改,该更改影响了它的hashCode及其equals方法。如果您这样做,哈希集的行为是未定义的-它可能再也找不到您的set2,因为它不再在正确的哈希桶中。抱歉,由于我的信用度低,我现在无法添加图片。图片与所附代码相同