java set 空值_为什么TreeSet在Java中不允许空值?

TreeSet提供Set接口的实现,该接口使用树进行存储。对象按排序和升序存储。

访问和检索时间非常快,这使得TreeSet在存储必须快速找到的大量排序信息时成为绝佳的选择。

原因是,如果您查看TreeSet的内部实现,它使用自然排序,这意味着TreeSet默认情况下使用Comparable接口通过比较其他值对它的值进行排序。

示例public class TreeSetDemo {

public static void main(String args[]) {

TreeSet treeSet = new TreeSet();

treeSet.add("Apple");

treeSet.add("Mango");

treeSet.add("Orage");

treeSet.add("grapes");

treeSet.add("Banana");

System.out.println(treeSet);

}

}

输出结果[Apple, Banana, Mango, Orage, grapes]

向树集添加空值

TreeSet根据其自然顺序向其中添加元素。这将使用compareTo(或compare)方法在内部将元素相互比较。

如果尝试使用这些方法之一比较具有空值的任何对象,则将引发NullPointerException。

因此,如果尝试将空值添加到TreeSet,则它将在运行时生成NullPointerException。

示例import java.util.Set;

import java.util.TreeSet;

public class TreeSetExample {

public static void main(String args[]) {

Set treeSet = new TreeSet();

//填充HashSet-

treeSet.add(1124);

treeSet.add(3654);

treeSet.add(7854);

treeSet.add(9945);

System.out.println(treeSet);

//添加空元素

treeSet.add(null);

treeSet.add(null);

treeSet.add(null);

System.out.println(treeSet);

}

}

运行时异常Run time exception:

[1124, 3654, 7854, 9945]

Exception in thread "main" java.lang.NullPointerException

at java.util.TreeMap.put(Unknown Source)

at java.util.TreeSet.add(Unknown Source)

at MyPackage.TreeSetExample.main(TreeSetExample.java:16)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值