一、异常
二、捕获异常
三、抛出异常
四、HashSet集合
五、TreeSet集合
六、List集合
七、Map集合
八、工具类Collections
一、异常
二、捕获异常
举例:
try{}
catch(){}
.
.
catch(){}
finally{}
这种异常捕获机制中,catch可以为一个或者多个,
finally{}可有可无,如果写上去,无论是否有异常,最后都会被执行。
举例:
理解:
在捕获第一个异常后try{}内部下方的都不执行,跳到第一个catch;
并且这两个catch()内的异常类型都要是具体的,不能为Exception。
所以不如下方的方便:
检测到第一个异常过后修改,再次检测下一个异常。
三、抛出异常
(1)先抛出,再处理
(2)父类的方法抛出异常,子类重写方法也要抛出异常;
注意:子类抛出的异常类型范围不能比父类的大
如下一图:
(3)人工抛出异常
写法如下:
第一步:在类A中建立能够抛出异常的方法,如果输入的年龄不和要求,那么抛出异常,并输出文字。
第二步:在main方法中调用上述方法,并用try-catch捕获异常。
第三步:运行,输出结果为
(4)用户自定义异常类
java允许用户自定义异常类型,java提供的异常类型够用,所以用户自定义异常类型仅需了解。
四、HashSet集合
↑补充:一般hashcode为同时相等或同时不相等。↑
下面是代码部分(在main方法中进行):
(1)
第一/二行是必要的,
添加元素,输出结果为:
[null,1,a]
(2)
移除元素,输出结果为:[null,a]
(3)
判断是否包含元素 a,输出结果为:
true
(4)
清空集合,输出结果为:
[ ]
(5)
获取集合元素个数,输出结果为:
0
(6)如何遍历集合(将集合中的元素逐个输出)
输出为:[a,b,c,d]
①:
使用迭代器遍历集合
输出为:
a
b
c
d
②:
for each 迭代集合
输出为:
a
b
c
d
(7)
使用泛型,让集合只存在同一类型的对象
五、TreeSet集合
1.自然排序
下面是代码部分(在main方法中进行):
前面提及的方法,在这里都可以使用
输出为:
[2, 3, 4, 5]
下面进行遍历:
输出结果均为:
2
3
4
5
2.定制排序
代码部分如下:
如果想要根据年龄对人物进行排序
(1)新建Person类连接 Comparator 接口;
(2)会报错,点击报错处在Person类内部建立compare方法(自动);
(3)在Person类内部定义属性(姓名、年龄);
(4)在Person类中建立无参构造器(便于输入给TreeSet)和有参构造器(便于在new对象时输入具体姓名和年龄)
(5)改写compare方法,具体如图;
(6)在main方法中新建三个Person对象(有参),分别输入对应的姓名、年龄;
(7)建立TreeSet集合,输入无参Person类(同时使用泛型,限定为Person);
(8)把三个Person对象(p1,p2,p3)添加到集合set1中;
(9)使用 for each 遍历集合,发现按照年龄输出(可以从正序改为倒序),输出结果为:
六、List集合
List集合常指ArrayList
下面是代码部分(均在main方法中):
(1)List集合按元素的添加顺序来排列,元素可以重复
输出结果为:
[d, b, c, c]
(2)
输出结果为:
c
(3)
输出结果为:
[d, as, b, c, c]
(4)
输出结果为:
[d, as, 123, 456, b, c, c]
(5)
输出结果为:
2
6
(6)
输出结果为:
[as, 123, 456, b, c, c]
(7)
输出结果为:
[ws, 123, 456, b, c, c]
(8)
输出结果为:
[456, b]
(9)
输出结果为:
6
七、Map集合
1.HashMapd代码部分(在main方法中):
(1)添加键值对,使用map.put( k , v ),value值可重复
输出结果为:
{a=1, b=2, c=2}
(2)
输出结果为:
2
(3)
输出结果为:
{a=1, c=2}
(4)
输出结果为:
2
(5)
输出结果为:
true
true
(6)
输出结果为:
[a, c]
[1, 2]
(7)
输出结果为:
key: a, value: 1
key: c, value: 2
key: a, value: 1
key: c, value: 2
2.TreeMap
TreeMap的自然排序方式为字典排序
代码部分如下(在main方法中):
输出结果为:
{1=a, 2=a, 3=c}
输出结果为:
{1=f, 12=k, a=v, b=k, c=s}
八、工具栏Collections
代码部分如下(在main方法中):
(1)
输出结果为:
[c, a, a, 1, ae]
(2)
输出结果为:
[ae, 1, a, a, c]
(3)
输出结果为(随机排序,每次运行都不一样):
[a, c, ae, a, 1]
(4)
输出结果为:
[1, a, a, ae, c]
(5)
输出结果为:
[a, 1, a, ae, c]
(6)
输出结果为:
c
1
(7)
输出结果为:
2
(7)
输出结果为:
[ac, 1, ac, ae, c]
(8)根据指定的Comparator产生的顺序对List集合元素进行排序,与之前的自制Person对象相同
①新建如下类(注意有无参构造器和有参构造器)
②在main方法中新建Student对象(有参构造器的作用)
③新建List集合,使用泛型,指定输入为Student类(无参构造器的作用),同时输入Student对象
④将自制的对象进行排序(暂时不太清楚是按照什么排序)
答:现在清楚了,这个排序规则就是新建的Student类中的比较规则
⑤使用 for each 遍历集合
输出结果为:
王大,21
张三,24
刘二,32
(9)根据Comparator指定的顺序,返回给定集合的最大/最小元素
输出结果为:
刘二,32
王大,21
同步控制暂时只做了解,待学习多线程之后再回来看。