集合(1)

目录

一、总述

1.1 最上层接口

1.2 中层抽象类

1.3 最底层实现类 

二、集合基础 

 2.1 Java集合类

 2.1.1 Collection

2.1.2 Map

2.2 集合底层的数据结构 

2.2.1 List

2.2.2 Set

2.2.3 Queue

2.2.4 Map

 2.3 集合线程是否安全

 2.3.1 线程安全

2.3.2 线程不安全 


一、总述

理解Java集合体系可以从三个层次:最上层的接口、中间的抽象类、最后的实现类

1.1 最上层接口

表示不同的类型集合,Collection、Map、List、Set、Queue、Deque等,以及辅助性质的接口Iterator、LinkIterator、Comparator、Comparable这些接口是为迭代和比较元素而准备。

1.2 中层抽象类

在这里实现大多数的接口方法,继承类只需要根据自身特性重写部分方法或者实现接口方法即可。

1.3 最底层实现类 

对接口的具体实现,主要常用的有:ArrayList、LinkedList、HashMap、HashSet、TreeMap等等。

除此之外,还有Collections和Arrays类用来提供各种方法,方便开发。

二、集合基础 

 2.1 Java集合类

主要由Collection和Map这两个接口派生而出,其中Collection接口又派生出三个子接口,分别是Set、List、Queue。所有的Java集合类,都是Set、List、Queue、Map这四个接口的实现类。

 2.1.1 Collection

是所有集合框架的根接口,包含了对集合进行基本操作的方法

  • List接口:有序集合,允许元素重复。常见实现类有ArrayList、LinkedList
  • Set接口:不允许重复元素的集合。常见实现类有HashSet、LinkedHashSet、TreeSet
  • Queue接口:用于表示队列的数据结构。常见实现类有LinkedList、PriorityQueue

2.1.2 Map

表示键值对的集合。常见实现类有HashMap、LinkedHashMap、TreeMap 

2.2 集合底层的数据结构 

2.2.1 List

  •  ArrayList:基于动态数组实现。底层使用数组作为存储结构
  • LinkedList:基于双向链表实现。底层使用节点连接形成链表结构
  • Vector:类似于ArrayList,但是是线程安全的。底层也是使用数组实现

2.2.2 Set

  •  HashSet:基于哈希表实现。底层使用一个数组和链表/红黑树的结构来存储元素
  • LinkedHashSet:在HashSet的基础上加入了链表,使得迭代顺序可预测
  • TreeSet:基于红黑树实现。底层使用自平衡的二叉搜索树存储元素,以保持有序性

2.2.3 Queue

  •  LinkedList:基于双向链表实现。底层同时实现了List、Queue、Deque接口
  • PriorityQueue:基于优先级堆实现的队列。底层使用数组表示的二叉堆

2.2.4 Map

  •  HashMap:基于哈希表实现。底层使用一个数组和链表/红黑树的结构来存储键值对
  • LinkedHashMap:在HashMap的基础上加入了链表,使得迭代顺序可预测
  • TreeMap:基于红黑树实现。底层使用自平衡的二叉搜索树存储键值对,以保持有序性
  • HashTable:类似于HashMap,但是线程安全的。底层也是使用哈希表

 2.3 集合线程是否安全

 2.3.1 线程安全

  1. Vector:通常建议使用ArrayList
  2. HashTable:通常建议使用HashMap
  3. Collections.synchronizedList、Collections.synchronizedSet、Collections.synchronizedMap:这些方法可以将非线程安全的集合包装成线程安全的集合

2.3.2 线程不安全 

  1. ArrayList、LinkedList、HashSet、HashMap
  2. TreeSet、TreeMap:虽然两者是有序集合,但也是非线程安全的 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值