Java基础集合-总览

Java集合是一个庞大的体系,用来存储、操作大量数据,集合占据了java.util的半壁江山,下面只介绍常用一些集合类:

image

如图,集合主要分四个大板块:

  • Collection集合
  • Map集合
  • 迭代器和枚举器
  • 工具类

两大接口Collection和Map。Collection是单列集合,Map是双列集合,存储键值对元素。

Collection

Collection是包含了集合的基本操作和属性的接口,主要有List和Set两大分支:

  • List是一个有序(放入的顺序)、有下标、允许元素重复的集合;
  • Set是一个无序、无下标的、不允许元素重复的集合;

另外Collection还有一个Queue分支,但没有与数据结构对应的队列类,而是通过LinkedList来实现的队列,LinkedList还实现了栈的功能。

常用类

List:

  • ArrayList:是数组实现的列表,动态数组,非线程安全;
  • LinkedList:是双向链表实现的列表,非线程安全;
  • Vector:是数组实现的矢量队列,动态数组,线程安全;
  • Stack:是vector实现的栈,动态数组,线程安全;

Set:

  • HashSet:是HashMap实现的集合,非线程安全;
  • LinkedHashSet:是LinkedHashMap实现的有序集合,非线程安全;
  • TreeSet:是实现SortedSet接口,由TreeMap实现的有序集合树,非线程安全;

Map

Map是键值对映射的集合,一个键对应一个值,键不允许重复,值可以重复。可以利用Map键不重复的特性实现Set。

常用类
  • HashMap:是存储键值对的哈希表,非线程安全;
  • LinkHashMap:是HashMap实现的键值对哈希表,非线程安全;
  • HashTable:是存储键值对的哈希表,线程安全
  • IdentityHashMap:是HasMap实现的存储键值对的弱键哈希表,非线程安全。
  • TreeMap:是存储键值对的有序集合树,非线程安全。

上图中看似Collection和Map独立,其实也不完全独立,比如:Hashset是通过HashMap实现的,Tree是通过TreeMap实现的。

迭代器和枚举器

两大用于遍历元素的接口Enumerationm枚举器和Iterator迭代器。由于Collection是单列的,可直接迭代。Map支持键值对迭代、键迭代、值迭代。Iterator是JDK1.2提出的,Enumeration可以转化为Iterator,Enumeration的功能要比Iterator少,Enumeration只能用在HashTable、vector、Stack。ListIterator是Iterator的子接口,专门适用于List,在Iterator的基础上支持逆向迭代。

集合工具类

两个工具类Arrays和Collections,Arrays主要是对数组的操作,它可以通过asList方法将数组转化为ArrayList(Arrays的内部类)。Collections是专门用于实现基础集合的同步工具类,存在大量操作集合的静态方法和大量的内部类。但是这些同步类的并发控制是通过synchronized同步方法实现的,效率并不是很高。所以在JUC中提供了与普通集合对应的支持高并发的集合类。

需要注意的是:Arrays的内部类ArrayList不能修改长度,也就是不能做add和remove操作,因为该ArrayList没有实现这两个方法,但是可以做修改操作(set(int index, E element))

数据结构

集合中的主要数据结构有:

  • 数组
  • 链表、双向链表
  • 队列、双向队列
  • 树、红黑树
  • 哈希表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值