gpt4 book ai didi

java - Java 中的 HashSet 和 TreeSet

转载 作者:行者123 更新时间:2023-11-29 09:44:03 33 4
gpt4 key购买 nike

Set s = new HashSet();

boolean b[] = new boolean[5];
b[0] = s.add("a");
b[1] = s.add(new Integer(5));
b[2]= s.add("a");
b[3] = s.add(new Object());
b[4] = s.add("4");
for(int i=0;i<b.length;i++){
System.out.println(b[i]);
}

这给了我预期的输出:-

true
true
false
true
true

但是当我使用 Treeset 时

Set s = new TreeSet();

它给了我这个异常(exception)。

Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
at java.lang.Integer.compareTo(Unknown Source)
at java.util.TreeMap.put(Unknown Source)
at java.util.TreeSet.add(Unknown Source)
at com.sunil.questions.TreeSetExample.main(TreeSetExample.java:15)

我想知道为什么它会向我展示这种行为。

最佳答案

  • TreeSet已排序,无法排序 StringInteger一起。这就是您收到此异常的原因。

如果你只是添加相同类型的元素,那么你不会得到异常。

这就是泛型发挥作用的地方,如果您希望您的集合是类型安全的,那么您可以将它们声明为 Set<String> set = new HashSet<String>()Set<Integer> set = new TreeSet<Integer>();

使用此方法,编译器本身将阻止您将整数添加到 Set<String>同样。

关于java - Java 中的 HashSet 和 TreeSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18399123/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com