Java-集合深入理解

集合

集合类存放于Java.util包中

集合类型主要有三种:set(集)、list(列表包含Queue)、map(映射)。

Collection:Collenction是集合的基本接口,List、Set、Queue的最基本的接口。

Iterator:迭代器,可以通过迭代器遍历集合中的数据

Map:是映射表的基本接口

List有序集合

java的List是非常常用的数据类型,List是有序的Collection。Java List一共三个实现类:分别是ArrayList、Vector和LinkedList

ArrayList:ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要将已经有数组的数据复制到新的存储空间中。当从ArrayList的中间位置插入或者删除元素时,需要对数据进行复制、移动代价比较高。因此,它适合随机查询或遍历,不适合插入和删除。

Vector:Vector与ArrayList一样,也是通过数组实现的,不同的是它支持现场的同步,即在每一时刻只有一个线程能够写Vector,避免多线程同时写而引起的不一致性,但实现同步需要很高的花费,因此,访问它比访问ArrayList慢。

LinkedList:linkedList是用链表结构存储数据的,很适合数据的动态插入和删除,随机访问和便利速度比较慢,另外,他还提供了List接口中没有定义的方法,专门用于操作表头和表尾元素,可以当做堆栈、队列和双向队列使用。

 

说明:

1、ArrayList在内存不够时默认是扩展50%+1个,Vector是默认扩展1倍。

2、Vector属于线程安全级别的,但是大多数情况下不使用Vector,因为线程安全需要更大的系统开销。

3、一般使用ArrayList和LinkedList比较多

4、对于随机访问get和set方法,ArrayList由于LinkedList,因为Linkedlist要移动指针

5、对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据

 

ArrayList

ArrayList是最常用的List实现类。ArrayList内部是通过数组实现的。所以只适合遍历或者随机查找

 

LinkedList

是以链表的结构进行存储对象的,动态新增和删除是很快,但是把你就很慢,并且不存在get()而操作,不能单个定位。说白了,ArrayList是顺序存储结构,LinkedList是链表存储结构。

 

Map集合

包含:HashMap、TreeMap

HashMap特点:

1.HashMap是无序的散列映射表;

2.HashMap通过Hash算法来决定存储位置;

3.底层实现是哈希表

TreeMap特点:

1.适用于按自然顺序或自定义顺序便利键(key)

2.底层是二叉树

3.提供compareTo,可以定义排序方法

 

Set集合

Set集合的几个特点:

1.Set集合不允许出现重复数据

2.允许包含值为null的元素,但最多只能有一个null元素

 

TreeSet的几个特点:

1、TreeSet不能有重复的元素

2、TreeSet具有排序功能,缺省是按照自然排序进行排列

3、TreeSet中元素必须实现Comparable接口并重写compareTo()方法,TreeSet判断元素是否重复、以及确定元素的顺序靠的都是这个方法

4、基于TreeMap实现的

HashSet的几个特点:

1、HashSet不能有重复的元素

2、HashSet是无序的

3、HashSet也是基于HashMap实现例子

 

转载于:https://www.cnblogs.com/zhoudongcq/p/6764213.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值