TreeSet的null值与元素类型的约束

本文详细介绍了Java中TreeSet的使用方法,包括默认情况下元素的限制、如何允许null值以及如何存储不同类型的元素。提供了具体示例代码,展示了如何通过Comparator接口自定义排序规则。

一、TreeSet

Java的TreeSet通过TreeMap来实现,具有自然排序的功能。

在默认情况下,元素不允许为null值,元素必须是相同类型,元素必须实现了Comparable接口;否则会出现java.lang.ClassCastException。

可以通过设置Comparator接口的实例,来实现元素允许为null值,元素为不同类型。


二、代码实现

(1)默认情况

 TreeSet treeSet=new TreeSet();
 treeSet.add(1);
 treeSet.add(2.0);

输出结果

Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Double
	at java.lang.Double.compareTo(Unknown Source)
	at java.util.TreeMap.put(Unknown Source)
	at java.util.TreeSet.add(Unknown Source)
	at cn.test.Test.main(Test.java:9)

(2)null值

 TreeSet treeSet=new TreeSet((o1,o2)->{
          return Objects.toString(o1).compareTo(Objects.toString(o2));
       });
 treeSet.add(1);
 treeSet.add(null);

(3)不同类型

TreeSet treeSet=new TreeSet((o1,o2)->{
          return Double.valueOf(o1.toString()).compareTo(Double.valueOf(o2.toString()));
       });
treeSet.add(1);
treeSet.add(2.0);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值