在这里插入图片描述

1.泛型和类型安全的容器
  1. ArrayList
  • (1) add() 插入对下对象
  • (2) get() 查看对象
  • (3) size() 查看已经有多少元素
  • (4) 可自动拓充自身尺寸的数组
  1. ArrayList<类型参数>
  • 尖括号里面的泛型可以防止在编译器防止将错误类型放入容器
  1. Object默认的 toString() 方法打印的是:类名 + 散列码的无符号十六进制表示
2.基本概念
  1. java容器的作用是 保存对象

  2. Controller 独立元素的序列(可以用foreach遍历)
  • (1) List
    按插入顺序保存对象(可重复)
  • (2) Set
    不能有重复元素
  • (3) Queue
    按照 排队规则 来确定对象产生的顺序
  1. Map 一组成对的“键值对”对象,用键查值
  • 映射表/关联数组/字典
3.添加一组元素
  1. Arrays.asList()
  • 接受一个数组或是一个用逗号分隔的元素列表(可变参数)并转为List对象,所以底层是数组,不能调整尺寸,使用add()和delete()会报[Unsupported Operation]错
  1. Collections.addAll()
  • 接受一个Conllection对象或是一个用逗号分隔的元素列表,并转为Conllection对象
  1. Conllection.addAll()
  • 只能接受一个 Collection 对象
  1. 显示类型参数说明
  • Arrays.asList
4.容器的打印
  1. Collection(每个槽只保存一个元素;[A,B])
  • (1) List(插入顺序保存)
    i.ArrayList

    ii.LinkedList

  • (2) Set(相同项保存一次)

    i. HashSet:最快获取元素方式

    ii.TreeSet:升序保存对象

    iii.LinkedHashSet:添加顺序保存对象

  1. Map(关联数组,键找值)
  • (1) HashMap:算法控制顺序
  • (2) TreeMap:升序保存键
  • (3) LinkedHashMap:插入顺序保存键,保留HashMap查询速度
5.List
允许添加,删除元素,自我调整尺寸
  1. contains():确定对象是否在列表中
  2. remove():删除一个对象
  3. indexOf():通过对象引用查索引编号
  4. subLIst(from,to):截取左闭右开的List部分
  5. containsAll():确定B不是A的子集(A.containsAll(B))
  6. retainAll():交集操作
  7. removeAll():移除所有元素
  8. set():用参数替换指定索引出的参数(set(1,new Mouse))
  9. addAll():在初始List位置中间插上新列表
  10. isEmpty():判断集合是不是空
  11. clear():从列表移除所有元素
  12. toArray():将任意Collection转为一个数组
6.迭代器
  1. 迭代器是一个轻量级对象(创建它的代价小)它的工作是遍历并选择序列中的对象

  2. Interator只能单向移动

  3. iteracior()要求容器必须返回一个Interator

  4. next():获取序列中的下一个元素

  5. hasnext():检测序列中是否还有其他元素

  6. remove():删除新近元素

  7. Interator能够将遍历序列的操作与序列底层的结构分离

  8. ListIterator
  • (1) 只能用于各类List访问
  • (2) 可以双向移动
  • (3) 产生当前迭代器前一个和后一个元素的索引
  • (4) 使用set()替换访问的最后一个元素
  • (5) 调用listIterator(n),可以设置一个索引为n开始的listIterator
7.LinkedList
  1. 查看
  • (1) getFirst()和element():返回列表头,不删除;如果List为空抛出NoSuchElementException
  • (2) peek()列表为空返回null
  1. 删除
  • (1) removeFirst()和remove()删除并返回头;如果列表为空抛出NoSuchElementException
  • (2) poll()列表为空返回null
  1. addFirst()列表首部添加元素
  2. add()和addFirst()尾部添加元素
  3. removeLast()移除并返回最后一个元素
8.Stack
  1. 栈(叠加栈):先进后出(LIFO)容器
  2. Stack范型可以替换成任何类型
  3. LinkList可以实现Stack的功能
9.Set
  1. set不保存重复元素

  2. contains()测试set归属性

  3. set基于对象的值确定归属性

  4. 三种Set
  • (1) HashSet:使用散列,查询速度快,无序
  • (2) TreeSet:使用红黑树存储,有序
  • (3) LinkedHashSet:使用散列保障查询速度,链表维护插入顺序
  1. Set words = new TreeSet(string.CASE_INSENSITIVE.ORDER)可以按字母顺序排序
10.Map
  1. 如果键不存在,get()方法返回null
  2. containsKey()查看是否包含某个键
  3. containsValue()查看是否包含某个值
  4. KeySet()方法产生了所有键组成的Set
11.Queue
  1. 队列是“先进先出”的容器

  2. 队列可以安全的从一个任务传输给另外一个任务

  3. LinkedList可以向上转型为Queue

  4. offer():将一个元素插入对尾或返回false

  5. 在不删除的情况下返回队头
  • (1) peek():队列为空返回null
  • (2) element():队列为空抛出NoSuchElementException异常
  1. 返回并删除队头
  • (1) poll():队列为空返回null
  • (2) remove():队列为空抛出NoSuchElementException异常
  1. PriorityQueue
  • (1) 优先队列声明下一个弹出的元素是最重要的元素(具有最高优先级)
  • (2) 默认顺序是使用对象在队列中的自然顺序
  • (3) PriorityQueue可以确保你调用的peek()、poll()和remove()方法时,获取元素将是队列中优先级最高的元素
  • (4) 最小值有最高的优先级(String中空格优先级最高)
12.Collection和Iterator
  1. Collection是描述所有有序序列的共性的根接口
  2. 生成Interactor是将队列与消费队列的方法连接在一起耦合度最小的方式,并且实现Collection相比它在序列上所施加的约束也少得多
13.Forch和迭代器
  1. 任何实现了Iterable接口的类都可以用于foreach语句当中。

  2. foreach语句最终被编译器转换成对iterator.next()和iterator.hashNext()方法的调用,也就是对Iterator的另一种封装形式而已。

  3. 适配器方法惯用法:

    Arrays.asList()产生的List对象使用底层数组作为其物理实现,如果你不想原来数组被修改,那应该创建一个容器副本

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐