Java--容器概述

一、容器概述

容器主要分为Collection和Map两种,Collection是对象的集合,而Map是存储着键值对(两个对象)的映射表。

Collection

Collection是对象的集合,继承了Iterable。

说明Collection支持快速失败机制(fail - fast),涉及到modifyconcurrentException这个经典的异常。

1.List

  • ArrayList:底层基于动态数组实现,支持随机访问。
  • LinkedList:底层基于双向链表实现。一般可以用作双向队列
  • Vector:底层基于数组实现,是线程安全的List,里面方法都用synchronized修饰。(Vector一定线程安全吗?

2.Set

  • HashSet:底层基于哈希表实现,查找元素的时间复杂度为O(1),但是会丢失元素的顺序性,也就是说通过Iterator遍历Hashset的结果的顺序可能会与加入元素HashSet的元素顺序不同。
  • TreeSet:基于红黑树实现,支持有序性操作,但是查找效率不如HashSet,TreeSet为O(logN)。

3.Queue

  • LinkedList: 用LinkedList来实现双向队列
  • PriorityQueue:基于堆结构实现,用它来实现优先队列。

Map

Map是key - value的一种数据结构,主要有以下几个实现类:

1.HashMap

基于哈希表实现,具体可看笔记。

2.HashTable

基于哈希表实现,是线程安全的HashMap,里面的方法都用synchronized来修饰,在JDK1.6的时候对锁进行了很大的优化,但是建议在并发环境下还是使用concurrentHashMap。

3.TreeMap

TreeMap基于红黑树来实现的。

4.LinkedHashMap

因为HashMap是会丢失加入的元素的顺序性,因此LinkedHashMap是使用双向链表来维护元素的加入顺序,一般用来实现LRU缓存。

二、适配器模式

可以看到Collections实现了Iterable接口,而Iterable接口提供了一个产生Iterator对象的方法,使用Iterator对象则可以遍历元素,和使用forEach:

List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
for (String item : list) {
    System.out.println(item);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>