Java集合类--List接口

List接口:

List接口有三个实现类:ArrayList、LinkedList和Vector:

1.ArrayList内部是通过数组的形式实现,线性表结构,创建的时候默认开辟一段连续的空间,也可以指定list的长度,存储内容必须是连续的、可重复、有序的列表集合。因为ArrayList内部是通过数组形式实现,并且连续不可断,所以ArrayList集合在删除或增加元素的时候,为了保证集合的连续性,会挪动、修改集合中其他元素,消耗代价大,所以ArrayList不适合存储要多次进行增删操作的元素。

2.LinkedList内部通过链表形式实现,通过指针实现元素间的链接,与ArrayList集合相比,增删集合元素只需要修改一个前驱一个后续即可,高效快速。是无序的,随机访问和遍历时速度慢。

3.Vector,Vector和ArrayList一样,都是通过数组实现的,与ArrayList不同,Vector实现线程安全。有句话说:“安全,高效,少代码是程序员誓死追求的境界。然而安全,必然效率不高;效率高,必然不安全,不能兼顾!”,实现安全同步花费很大,Vector线程安全,但效率不高。


Set接口:

一个不包含重复元素,并且最多只能有一个null 元素的集合,添加元素时,每次都会比较集合中是否已经存在该元素,e1.equals(e2),保证元素的唯一。

Set接口常见的实现类:TreeSet,HashSet和LinkedHashSet:

1.TreeSet(树表集),能够实现排序等功能的集合,它对元素添加时会自动的按照某种比较规则将其插入到有序的对象列中,并且保证元素时刻按照“升序”排列。TreeSet不是同步的,如果多个线程同时访问一个TreeSet,而其中至少一个线程修改了给set,那么它必须外部同步。

2.HashSet按照哈希算法来存取集合中的元素对象,具有很好的存取和查找性能,但并没有以某种顺序存放,当向一个集合中添加一个元素时,HsahSet会调用该对象的HashCode()方法来获取哈希码,然后根据这个哈希码来计算在集合中该存储位置。

3.LinkedHashSet是哈希表和链表结合的实现,不是同步的,如果多个线程同时访问一个LinkedHashSet,而其中至少一个线程修改了给LinkedHashSet,那么它必须外部同步。链表结构,迭代的时候只能按照插入顺序遍历。


Map接口:

键值对映射集合,key-value结构,一个映射不能包含重复的键,每个键最多只能映射到一个值。

Map中常见的实现类:HashMap,TreeMap:

1.HsahMap基于哈希表的Map接口,其实现提供所有可选的映射操作,并允许使用null值和null键,除了非同步和允许使用null之外,HashMap类与HashTable大致相同,HashMap不保证映射的顺序,特别是它不能保证该顺序恒久不变。

2.TreeMap基于红黑树机构实现,该映射根据其键的自然顺序进行排序。TreeMap实现不是同步的,如果多个线程访问一个线程,并且其中至少一个线程从结构上修改了该映射,则必须采取外部同步。

3.HashTable此类实现一个哈希表,该哈希表将映射到相应的值,任何非null对象都可以用作键和值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值