java集合

java集合

Java里面最重要,最常用也就是集合一部分了。能够用好集合和理解好集合对于做Java程序的开发拥有无比的好处,这篇博客就是给大件简单的讲解一下java集合

一:首先我们都知道的java集合有:list,set,map,那其中的list,set,queue都是继承与collection接口的,而map与collection一点关系都没有哦,千万不要记混淆了,collection又是继承了iterable。
先来说说集合的老大iterable:

1:实现iterable接口的类可以拥有增强for循环(其实这里的增强for循环就是指的foreach)
2:实现iterable接口的集合类必须提供一个名为iterator()的方法,该方法的返回值为iterator.

二:接下来即使collection下面的集合:
一 List:
1:list接口下面有:ArrayList,LinkedList,vector
2:list集合的优点:1:可以添加重复的元素,2:有顺序的集合
3:ArrayList集合:
1:查询快,添加,删除和修改慢,除非是在末端进行,轻量级,线程不安全
(对于我自己来说最常用的还是ArrayList,其实对于它的增删改慢在实际的开发中我们都是增删改数据库的数据,所以和ArrayList没有什么关系)
4:LinkedList集合:
1:增加,删除和修改快,查询慢
可以看出来的是ArrayList和LinkedList它们两个之间的其实就是相反的,ArrayList的缺点到LinkedList这里就成了它的优点

二 Set:
1:Set集合下面有:HashSet,TreeSet,LinkedHashSet
2:Set集合的优点:1:不保存重复的元素,2:有顺序
3:HashSet集合:
1:速度是最快的(这里没有说什么速度最快,那就是默认所有都是最快的!),没有明显的顺序保存元素。
2:集合元素可以是null,但只能放入一个null
3:采用哈希算法来实现Set接口, 唯一性保证:重复对象equals方法返回为true ,重复对象hashCode方法返回相同的整 数 ,不同对象 哈希码 尽量保证不同(提高效率)。
4:TreeSet集合:
1:按照比较 结果的升序保存对象
5:LinkedHashSet集合:
1:按照被添加的顺序保存对象

三 Queue:
1:Queue 翻译过来就是队列:主要特点是 先进先出
2:LinkedList提供了方法以支持队列的行为,且实现了Queue接口,因此ListedList可以用作Queue的一种实现

三:Map集合:
Map集合下面有:HashMap,TreeMap和LinkedHashMap
一:HashMap集合:
提供了最快的访问技术,没有按照明显的顺序保存元素(这里和HashSet是差不多的)
二:TreeMap集合:
1:无序,不允许重复(无序指元素顺序与添加顺序不一致)
2:TreeMap集合默认会对键进行排序,所以键必须实现自然排序和定制排序中的一种
三:LinkedHashMap集合:
1:按照插入顺序保存键,同时还保存了HashMap的保存速度

一个关于java集合之间的题目,我就写在下面:
1:iterable的方法remove()和Collection的remove(Object)有什么区别?
最简单的应该就是一个是有参数的一个无参数,在回答这个问题之前应该先了解两个集合的删除方法有什么不同。
iterable的remove():改方法可以删除由next()最新返回的项
Collection的remove(Object):从集合中删除指定的某项
区别:
1:性能方面:
Collection的remove方法必须首先找出要被删除的项,找到该项的位置采用的是单链表结构查询,单链表查询效率比较 低,需要从集合中一个一个遍历才能找到该对象;
Iterator的remove方法结合next()方法使用,比如集合中每隔一项删除一项,Iterator的remove()效率更高
2:容错方面:
在使用Iterator遍历时,如果使用Collection的remove则会报异常,会出现ConcurrentModificationException,因为集合中对象的个数会改变而Iterator 内部对象的个数不会,不一致则会出现该异常
在使用Iterator遍历时,不会报错,因为iterator内部的对象个数和原来集合中对象的个数会保持一致

OK,今天的java集合就写到这里吧。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值