文章目录
1.泛型和类型安全的容器
- (1) add() 插入对下对象
- (2) get() 查看对象
- (3) size() 查看已经有多少元素
- (4) 可自动拓充自身尺寸的数组
- ArrayList<类型参数>
- 尖括号里面的泛型可以防止在编译器防止将错误类型放入容器
- Object默认的 toString() 方法打印的是:类名 + 散列码的无符号十六进制表示
2.基本概念
- (1) List
按插入顺序保存对象(可重复) - (2) Set
不能有重复元素 - (3) Queue
按照 排队规则 来确定对象产生的顺序
- Map 一组成对的“键值对”对象,用键查值
- 映射表/关联数组/字典
3.添加一组元素
- Arrays.asList()
- 接受一个数组或是一个用逗号分隔的元素列表(可变参数)并转为List对象,所以底层是数组,不能调整尺寸,使用add()和delete()会报[Unsupported Operation]错
- Collections.addAll()
- 接受一个Conllection对象或是一个用逗号分隔的元素列表,并转为Conllection对象
- Conllection.addAll()
- 只能接受一个 Collection 对象
- 显示类型参数说明
- Arrays.asList
4.容器的打印
-
(1) List(插入顺序保存)
i.ArrayListii.LinkedList
-
(2) Set(相同项保存一次)
i. HashSet:最快获取元素方式
ii.TreeSet:升序保存对象
iii.LinkedHashSet:添加顺序保存对象
- (1) HashMap:算法控制顺序
- (2) TreeMap:升序保存键
- (3) LinkedHashMap:插入顺序保存键,保留HashMap查询速度
5.List
允许添加,删除元素,自我调整尺寸
- contains():确定对象是否在列表中
- remove():删除一个对象
- indexOf():通过对象引用查索引编号
- subLIst(from,to):截取左闭右开的List部分
- containsAll():确定B不是A的子集(A.containsAll(B))
- retainAll():交集操作
- removeAll():移除所有元素
- set():用参数替换指定索引出的参数(set(1,new Mouse))
- addAll():在初始List位置中间插上新列表
- isEmpty():判断集合是不是空
- clear():从列表移除所有元素
- toArray():将任意Collection转为一个数组
6.迭代器
-
迭代器是一个轻量级对象(创建它的代价小)它的工作是遍历并选择序列中的对象
-
Interator只能单向移动
-
iteracior()要求容器必须返回一个Interator
-
next():获取序列中的下一个元素
-
hasnext():检测序列中是否还有其他元素
-
remove():删除新近元素
-
Interator能够将遍历序列的操作与序列底层的结构分离
-
ListIterator
- (1) 只能用于各类List访问
- (2) 可以双向移动
- (3) 产生当前迭代器前一个和后一个元素的索引
- (4) 使用set()替换访问的最后一个元素
- (5) 调用listIterator(n),可以设置一个索引为n开始的listIterator
7.LinkedList
- (1) getFirst()和element():返回列表头,不删除;如果List为空抛出NoSuchElementException
- (2) peek()列表为空返回null
- (1) removeFirst()和remove()删除并返回头;如果列表为空抛出NoSuchElementException
- (2) poll()列表为空返回null
- addFirst()列表首部添加元素
- add()和addFirst()尾部添加元素
- removeLast()移除并返回最后一个元素
8.Stack
- 栈(叠加栈):先进后出(LIFO)容器
- Stack范型可以替换成任何类型
- LinkList可以实现Stack的功能
9.Set
- (1) HashSet:使用散列,查询速度快,无序
- (2) TreeSet:使用红黑树存储,有序
- (3) LinkedHashSet:使用散列保障查询速度,链表维护插入顺序
- Set words = new TreeSet(string.CASE_INSENSITIVE.ORDER)可以按字母顺序排序
10.Map
- 如果键不存在,get()方法返回null
- containsKey()查看是否包含某个键
- containsValue()查看是否包含某个值
- KeySet()方法产生了所有键组成的Set
11.Queue
- (1) peek():队列为空返回null
- (2) element():队列为空抛出NoSuchElementException异常
- (1) poll():队列为空返回null
- (2) remove():队列为空抛出NoSuchElementException异常
- (1) 优先队列声明下一个弹出的元素是最重要的元素(具有最高优先级)
- (2) 默认顺序是使用对象在队列中的自然顺序
- (3) PriorityQueue可以确保你调用的peek()、poll()和remove()方法时,获取元素将是队列中优先级最高的元素
- (4) 最小值有最高的优先级(String中空格优先级最高)
12.Collection和Iterator
- Collection是描述所有有序序列的共性的根接口
- 生成Interactor是将队列与消费队列的方法连接在一起耦合度最小的方式,并且实现Collection相比它在序列上所施加的约束也少得多
13.Forch和迭代器
-
任何实现了Iterable接口的类都可以用于foreach语句当中。
-
foreach语句最终被编译器转换成对iterator.next()和iterator.hashNext()方法的调用,也就是对Iterator的另一种封装形式而已。
-
适配器方法惯用法:
Arrays.asList()产生的List对象使用底层数组作为其物理实现,如果你不想原来数组被修改,那应该创建一个容器副本