当前位置: 首页>后端>正文

Java Collection

Collection 每个槽只保存一个元素
ArrayList 可变长数组 add() get(下标) size()方法
通过泛型,可以在编译期防止将错误类型的对象方在容器中 。容器中不能使用基本数据类型,如int,可以使用其对应的对象,如Integer

Arrays.toString()打印数组
Arrays.asList()方法接受一个数组或是一个用逗号分隔的元素列表(使用可变参数),转换为List,但是底层表示还是数组,不能调整尺寸
Collections.addAll()方法接受一个Collection对象、数组、用逗号分隔的列表
Collection.addAll() 方法只能接受另一个collection对象作为参数,因此它不如上两个那样灵活

Collection

  • ArrayList 数组
  • LinkedList 提供了优化顺序访问,在插入和移除上效率更高,但是随机访问性能较差
  • HashSet 无重复数据,最快获取元素的方式,不保存顺序
  • TreeSet 无重复数据 按照比较结果的升序保存
  • LinkedHashSet 无重复数据 按照被添加的顺序

Map

  • HashMap 不保留顺序,查找最快
  • TreeMap 按照升序
  • LinkedHashMap 按照插入顺序 同时还保留了HashMap的查询速度 LRU算法
    ContainsKey(), ContainsValue(),get(key), keyset()返回所有键值构成的set, values()返回值的Collection

List方法

  • Contains() remove() indexOf()
  • subList(1,4) 子集
  • retainAll() 交集
  • removeAll()删除全部
  • isEmpty()是否为空
  • clear()删除所有元素
  • toArray()将任意Collection转换成数组

Iterator

  • iterator()方法,要求容器返回一个Iterator, Interator准备返回序列第1个因素
  • 使用next()返回下一个元素
  • 使用hasNext() 检查序列中是否还有元素
  • 使用remove()方法将迭代器新返回的元素删除

Iterable接口

  • 任何类实现了Iterable类,都可以用于foreach语句中
  • Foreach语句可以用于数组和其他任何Iterable,但并不意味着数组也是一个Iterable,数组必须手工执行转换

LinkedList 双向链表

  • getFirst、Element() 返回列表头元素,如果为空,返回NoSuchElementException, peek() 返回null
  • removeFirst()、remove() 移除并返回头,为空时返回NoSuchElementException, poll()空时返回null
  • addFirst 插入队头
  • offer()、add()、addLast() 插入列表尾端
  • removeLast()移除并返回列表的最后一个元素

Queue

  • Offer()将元素插入队尾
  • Peek/element()返回队头
  • Poll/remove()移除并返回队头,poll()在没有元素的情况下返回null

PriorityQueue 加上优先级

可加上comparator来选择优先方式,如Collections.reverseOrder()

Stack 装弹簧的存储器中放入自助托盘,最后装入的托盘总是最先弹出

  • Peek()返回栈顶元素
  • Pop()返回并移除栈顶元素
  • Push()入栈

Set

  • HashSet 散列
  • TeeeSet 红黑树 在构造器中传入String.CASE_INSENTIVE_ORDER 排序时忽略大小写
  • LinkedHashList 也是使用了散列,使用链表来维护了元素的插入顺序

https://www.xamrdz.com/backend/3ag1936493.html

相关文章: