集合框架相关

一、集合框架是什么

集合框架是为表示和操作集合而规定的一种统一的标准的体系结构
任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。

 

二、使用集合框架的好处 

  1. 容量自增长;
  2. 提供了高性能的数据结构和算法,使编码更轻松,提高了程序速度和质量;
  3. 允许不同 API 之间的互操作,API之间可以来回传递集合;
  4. 可以方便地扩展或改写集合,提高代码复用性和可操作性。
  5. 通过使用JDK自带的集合类,可以降低代码维护和学习新API成本。

三、Java集合框架组成部分

1.接口(Interfaces )

Java集合框架接口提供了表示集合的抽象数据类型。

java.util.Collection 是集合框架的根接口,它位于集合框架层次结构的顶部。
它包含一些重要的方法,如size()、iterator()、add()、remove()、clear(),每个Collection类都必须实现这些方法。

其他一些重要的接口是 java.util.List, java.util.Set, java.util.Queue 和java.util.Map。

Map是唯一不从Collection接口继承的接口,但它是Collections框架的一部分。

所有集合框架接口都在java中的util包。

2.实现类(Implementation Classes)

Java集合框架接口为核心集合接口提供了实现类。

我们可以使用它们在Java程序中创建不同类型的集合。一些重要的集合类有ArrayList、LinkedList、HashMap、TreeMap、HashSet和TreeSet。

这些类解决了我们的大部分编程需求,但是如果我们需要一些特殊的集合类,我们可以扩展它们来创建我们的自定义集合类。

Java 1.5提供了线程安全的集合类,允许我们在遍历集合时修改它们。其中有CopyOnWriteArrayList, ConcurrentHashMap, CopyOnWriteArraySet。这些类在java.util.concurrent包中。

所有的集合类都在java.Util和java.util.concurrent包。

3.算法(Algorithms)

算法是提供一些常见功能的有用方法,如搜索(searching)、排序(sorting)和洗牌(shuffling)。

四、List 

1)ArrayList
优点: 底层数据结构是数组,查询快,增删慢。
缺点: 线程不安全,效率高

2)Vector
优点: 底层数据结构是数组,查询快,增删慢。
缺点: 线程安全,效率低

3)LinkedList
优点: 底层数据结构是链表,查询慢,增删快。
缺点: 线程不安全,效率高
 

五、Set

1)HashSet

底层其实是包装了一个HashMap实现的
底层数据结构是数组+链表 + 红黑树
具有比较好的读取和查找性能, 可以有null 值
通过equals和HashCode来判断两个元素是否相等
非线程安全


2)LinkedHashSet

继承HashSet,本质是LinkedHashMap实现
底层数据结构由哈希表(是一个元素为链表的数组)和双向链表组成。
有序的,根据HashCode的值来决定元素的存储位置,同时使用一个链表来维护元素的插入顺序
非线程安全,可以有null 值


3)TreeSet

是一种排序的Set集合,实现了SortedSet接口,底层是用TreeMap实现的,本质上是一个红黑树原理
排序分两种:自然排序(存储元素实现Comparable接口)和定制排序(创建TreeSet时,传递一个自己实现的Comparator对象)
正常情况下不能有null值,可以重写Comparable接口 局可以有null值了。
 

六、Map

1)HashMap
Map接口基于哈希表的实现,是使用频率最高的用于键值对处理的数据类型。

它根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,特点是访问速度快,遍历顺序不确定,线程不安全,最多允许一个key为null,允许多个value为null。

可以用 Collections的synchronizedMap方法使HashMap具有线程安全的能力,或者使用ConcurrentHashMap类。

2)Hashtable
Hashtable和HashMap从存储结构和实现来讲有很多相似之处,不同的是它承自Dictionary类,而且是线程安全的,另外Hashtable不允许key和value为null,并发性不如ConcurrentHashMap。

Hashtable不建议在新代码中使用,不需要线程安全的场合可以用HashMap替换,需要线程安全的场合可以用ConcurrentHashMap替换。

3)LinkedHashMap
LinkedHashMap继承了HashMap,是Map接口的哈希表和链接列表实现,它维护着一个双重链接列表,此链接列表定义了迭代顺序,该迭代顺序可以是插入顺序或者是访问顺序。

4)TreeMap
TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序(自然顺序),也可以指定排序的比较器,当用Iterator遍历TreeMap时,得到的记录是排过序的。

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值