java集合知识点总结

前言:集合在java中占据很重要的部分,最近自己在面试中也经常被问到这方面的知识,所以在这里简单的做了一个总结,不足的地方还请大家指教。
一:想要理解和灵活运用集合,首先我们从这张图开始说起。在这里插入图片描述
Iterator
二:Iterator(迭代器)
1、是Collection的父类。
2、实现Iterable接口的类可以增强for循环。
3、实现Iterable接口的集合类必须重写一个iterator()方法,而且该方法的返回
值必须为Iterator。
4、经常用的方法:
hasNext():是否存在下一项
Next();得到下一项
remove();移除(注:只能调用一次,但Next再一次调用时可执行remove()方法)

                                       Collection

三:Collection
1、是list、set的父类,但不是map的父类。(这个地方特别注意)

                                 Iterator 和    Collection的比较

四:Iterator的remove()方法 和Collection的remove()方法的区别(面试经常问)
1、Iterator的remove()方法是无参的,而Collection的remove()是有参数的。
2、在性能方面:
Iterator的remove()方法要高于Collection的remove()方法,因为在Iterator里面是结合了Next()方法直接移除下一项,而Collection的remove()因为是单链结构,所以每次执行remove()方法时都得遍历直到找到所对应的值才执行该方法。
例:使用Iterator的remove()方法删除奇偶数。
3、在容错方面:
由第二点,我们可以引申出第3点
在遍历时,如果Collection执行remove()方法是会报异常的,因为集合中的对象个数发生了改变,而Iterator的内部对象是不会变的,当两者不一致是会抛出异常。而Itorator是不会报错的,因为iterator的内部对象和集合中的对象是一致的。

                                      list

五:list
1、list的父类是Collection.
2、特点:有序,可以添加重复的元素
3、在list下面又有它的子类:ArrayList、LinkedList、Vector(因为用的比较少暂不讲解)
3.1、ArrayList
优点:查询快。
缺点:但增加,修改、删除慢。
3.2、LinkedList
优点:增加,修改、删除快。
缺点:查询慢。
例:对session购物车的增加和贪吃蛇游戏的应用。

                                       set

六:set
1、set的父类是Collection.
2、特点:无序,不可以添加重复值
3、在set下面又有它的子类:hashSet、LinkedHashSet、treeSet
3.1、hashSet
速度最快,没有明显的顺须保存元素;集合元素可以是null,但必须放一个空值。
3.2、LinkedHashSet
可以按照插入的顺序进行排序。
3.3、treeSet
可以指定一个顺序, 对象存入之后会按照指定的顺序排列。

                                       map

七:Map
map以键值对的形式存放值,以get去获得map的值。

                        hashMap、treeMap、LinkedHashMap区别   

我们一般对Map的应用较多的是hashMap、treeMap、LinkedHashMap,首先hashMap提供最快的查询速度,并没有按照明显的顺序保存元素;treeMap是按照插入顺序保存键值,同时保留了hashMap的查询顺序;LinkedHashMap是按照比较结果的升序保存键值。

八:hashMap扩容的问题。
hashMap的默认长度是16,当它的因子达到0.75的时候,也就是长度为12(16*0.75=12)时,它会自动增长16,也就是说这个时候hashMap的长度为
32,当然,默认长度是可以改变的,但必须以2的次方增长。

                             Array和ArrayList的区别

九:
8.1、Array是一个数组,只能储存相同的数据类型的数据,而ArrayList是一个集合,可以储存不同的数据类型。
8.2、 因为Array是数组,所以长度是不可变的,而ArrayList是一个集合,长度可变。

                             数组和集合的相互转换

九:可以使用Arrays.asList将数组转换为集合,使用List.toArray将集合转换为数组。

                             HashMap和HashSet的区别

1、HashMap实现的是Map接口,而HashSet实现的是Set接口。
2、HashMap增加值的方法是以put()向map中添加的元素,而 HashSet增加值的方法是以add()向set中添加的元素。
3、HashMap是以key计算hashcode的,而 HashSet使用的是成员对象来计算hashcode的。
4、hansMap相对与 HashSet的查询速度更加的快,因为它是使用唯一的键获取对象;HashSet相对与 hansMap慢。

                              list、set、map的区别                                          

1、list、set都继承Conllecton,但map不是Conllecton的子接口。
2、list元素可以重复,set元素不可以,map以键值对存储,键不可以重复,值可以重复。
3、list可以插入空元素,set只允许插入一个空元素,map键允许插入一个空元素,但值可以允许插入多个空元素。
4、list是有序的容器插入的顺序和输出的顺序是一样的,set无序容器,map无序容器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值