Java的throws、HashSet和TreeSet

throws

参考博客:再探java基础——throw与throws



说明: throws 是方法可能抛出异常的声明(用在声明方法时,表示该方法可能要抛出异常)。
语法: [(修饰符)](返回值类型)(方法名)([参数列表])[throws(异常类)]{......}
例子: public void function() throws Exception{......}

  • 需要注意的是,一旦声明了 throws 异常类 ,那么该方法只能抛出该异常类或该异常类的子类,其它异常必须在方法内部进行处理。
  • 在这个方法里面,只能抛出 myBaseExceptionmySubException,而不能抛出其它异常。

HashSet的使用

HashSet实际上是对HashMap的封装,关于HashMap的工作原理可以看这里。其插入和查找效率都很高。

  • 使用 HashSet 来判断两个集合是否属于包含关系。


  • {a,b,c,d,e} 不包含元素 f,包含集合 {a,e}

自定义类放入HashSet

  • 如果要将自定义类放入 HashSet,我们需要在自定义类中实现 hashCodeequals 方法来获取该类的哈希值、判断是否相等。

  • 尝试将其添加到HashSet:

  • 输出结果:

自定义类放入TreeSet

  • 如果要将自定义类放入 TreeSet,我们需要在自定义类中实现 compareTo 方法用来排序。

  • 尝试将其添加到TreeSet:

  • 输出结果:

过程感言

  • 如果自定义类放入 HashSet 中却没有实现 hashCodeequals 方法,程序仍然可以正常运行。但此时判定重复的依据只是该对象的id。
  • 如果自定义类放入 TreeSet 中却没有实现 compareTo,程序运行时将会报错。
  • 像这种Java内置的高级数据结构集成了很多很方便的功能。在自己写的类中实现某些方法就可以方便地调用这些功能,代码效率和可读性、健壮性都有保证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值