List、Stack、Queue、Set和Map定义和常用方法

在这里插入图片描述

集合

Java容器类库中的两种主要类型

1. 每个槽只保存一个元素
  Collection:描述所有序列容器的共性的根接口;
  List:以特定的顺序保存一组元素;
  Set:元素不能重复;
  Queue:只允许在容器的一端插入对象,并从另一端移除对象。
2. 每个槽内保存了两个对象
  Map:键与之相关联的值。

List

1. 方法摘要:
  • add(E e):将指定的元素追加到此列表的末尾(可选操作);
  • contains(Object o):如果此列表包含指定的元素,则返回 true;
  • remove(int index):删除该列表中指定位置的元素(可选操作),会用到equels()方法;
  • indexOf(Object o):返回此列表中指定元素的第一次出现的索引,如果此列表不包含元素,则返回-1,会用到equels()方法;
  • subList(int fromIndex, int toIndex):返回此列表中指定的 fromIndex (含)和 toIndex之间的视图;
  • containsAll(Collection<?> c):如果此列表包含指定 集合的所有元素,则返回true。
  • retainAll(Collection<?> c):仅保留此列表中包含在指定集合中的元素(可选操作),所产生的行为依赖equals();
  • removeAll(Collection<?> c):从此列表中删除包含在指定集合中的所有元素(可选操作),所产生的行为依赖equals();
  • set(int index, E element):用指定的元素(可选操作)替换此列表中指定位置的元素;
  • isEmpty():如果此列表不包含元素,则返回 true;
  • clear() :从此列表中删除所有元素(可选操作);
2. ArrayList:它长于随机访问元素,但是在List的中间插入和移除元素时比较慢;
3. LinkList:它通过代价较低的在List中间进行的插入和删除操作,提供了优化访问。
  • 实现了基本的List接口
  • getFirst()和element()返回列表的头,并不是移除它,List为空,则抛出NoSuchElementException;peek()方法列表为空是返回null;
  • removeFirst()与remove()移除并返回列表的头,而在列表为空时抛出NoSuchElementException;poll()列表为空返回null;
  • removeLast()移除并返回列表最后的元素。

Stack

1. 先进后出(LIFO)LinkList具有直接实现栈的所有功能的方法,因此可以直接将LinkedList作为栈使用,有时一个真正的“栈”更能够吧事情讲清楚。
	public class Stack<T> {
    
      
    private LinkedList<T> storage = new LinkedList<T>();  
    public void push(T v){
    
     storage.addFirst(v); }  
    public T peek(){
    
     return storage.getFirst(); }  
    public T pop(){
    
     return storage.removeFirst(); }  
    public boolean empty(){
    
     return storage.isEmpty(); }  
    public String toString(){
    
     return storage.toString(); }  
}

Queue

1. 队列是一个典型的先进先出(FIFO)的容器,即从容器的一段放入事物,从另一端取出,并且事物放入容器的顺序与取出的顺序是相同的。
2. 方法摘要:
* offer(E e) :如果在不违反容量限制的情况下立即执行,则将指定的元素插入到此队列中;
* peek() :检索但不删除此队列的头,如果此队列为空,则返回 null;
* element() :检索,但不删除,这个队列的头,为空会抛出NoSuchElementException; 
* poll() :检索并删除此队列的头,如果此队列为空,则返回 null 。
* remove() 检索并删除此队列的头,为空会抛出NoSuchElementException。
3. PriorityQueue

优先级队列声明下一个弹出的元素是最需要的元素(具有最高的优先级)

Set

1. HashSet:使用相当复杂的方式来存储元素,最快获取元素的方式,使用了散列函数;
2. TreeSet:按照比较结果的升序保存对象,存储在红黑树数据结构中;
3. LinkedHashSet:按照被添加的顺序保存对象;也使用了散列,使用链表来维护元素的插入顺序。

Map

1. Map可以返回它的键的Set,它的值是Collection,或者它的键值对的是Set,keySet()返回此地图中包含的键的Set视图。
1. HashMap:提供最快的查找技术,没有按照任何明显的顺序来保存元素;
2. TreeMap:按照比较结果的升序保存对象键;
3. LinkedHashMap:按照插入的顺序保存键,同时保留了HashMap的查找速度。

迭代器

1. 迭代器也是一种设计模式,是一个对象,它的工作时遍历并选择序列中的对象;
2. 迭代器奇奇怪怪的限制:
* 使用iterator()要求容器返回一个Iterator。Iterator将准备好返回序列的一个元素;
* 使用next()获得序列中的下一个元素;
* 使用hasNext()检查序列中是否还有元素;
* 使用remove()将迭代器信近返回的元素删除。

猜你喜欢

转载自blog.csdn.net/Zmd_23/article/details/108554176