throws
说明:throws
是方法可能抛出异常的声明(用在声明方法时,表示该方法可能要抛出异常)。
语法:[(修饰符)](返回值类型)(方法名)([参数列表])[throws(异常类)]{......}
例子:public void function() throws Exception{......}
- 需要注意的是,一旦声明了
throws 异常类
,那么该方法只能抛出该异常类或该异常类的子类,其它异常必须在方法内部进行处理。
- 在这个方法里面,只能抛出
myBaseException
或mySubException
,而不能抛出其它异常。
HashSet的使用
HashSet实际上是对HashMap的封装,关于HashMap的工作原理可以看这里。其插入和查找效率都很高。
- 使用
HashSet
来判断两个集合是否属于包含关系。
{a,b,c,d,e}
不包含元素f
,包含集合{a,e}
。
自定义类放入HashSet
如果要将自定义类放入
HashSet
,我们需要在自定义类中实现hashCode
和equals
方法来获取该类的哈希值、判断是否相等。
尝试将其添加到HashSet:
输出结果:
自定义类放入TreeSet
如果要将自定义类放入
TreeSet
,我们需要在自定义类中实现compareTo
方法用来排序。
尝试将其添加到TreeSet:
输出结果:
过程感言
- 如果自定义类放入
HashSet
中却没有实现hashCode
和equals
方法,程序仍然可以正常运行。但此时判定重复的依据只是该对象的id。 - 如果自定义类放入
TreeSet
中却没有实现compareTo
,程序运行时将会报错。
- 像这种Java内置的高级数据结构集成了很多很方便的功能。在自己写的类中实现某些方法就可以方便地调用这些功能,代码效率和可读性、健壮性都有保证。