【发布时间】:2018-09-14 21:47:19
【问题描述】:
对于下面的代码,它输出“1”。第二个代码输出“2”我不明白为什么会这样。是因为我添加了相同的对象吗?我应该如何实现所需的输出 2.
import java.util.*;
public class maptest {
public static void main(String[] args) {
Set<Integer[]> set = new HashSet<Integer[]>();
Integer[] t = new Integer[2];
t[0] = t[1] = 1;
set.add(t);
Integer[] t1 = new Integer[2];
t[0] = t[1] = 0;
set.add(t);
System.out.println(set.size());
}
}
第二个代码:
import java.util.*;
public class maptest {
public static void main(String[] args) {
Set<Integer[]> set = new HashSet<Integer[]>();
Integer[] t = new Integer[2];
t[0] = t[1] = 1;
set.add(t);
Integer[] t1 = new Integer[2];
t1[0] = t1[1] = 1;
set.add(t1);
System.out.println(set.size());
}
}
【问题讨论】:
-
您只需将一个
Object添加到Set。您更改其内容的事实无关紧要 -
那么我应该如何实现想要的输出呢?添加具有相同值的新对象也会创建两个新条目。
-
您使用的是
Set。两次添加对象将不起作用。第二个add将返回false。因此,您没有再将t添加到Set。 -
是的,如您的代码所示。试试这个
set.add(t1); -
答案已经解释过了。