int size();
boolean isEmpty();
boolean contains(Object o); // 注意o可以为null
Iterator<E> iterator(); // 返回迭代器
Object[] toArray(); // 返回对象数组
boolean add(E e); // 添加到列表末尾;如果实现类中e不可以为null则会报错,
boolean remove(Object o); // 按元素删除,删除遇到的第一个元素
boolean addAll(Collection<? extends E> c); // 将集合元素按照迭代顺序添加到列末尾
boolean removeAll(Collection<?> c); // 删除集合c里包含的所有元素
default void sort(Comparator<? super E> c) // 排序
void clear(); // 清除所有元素
List接口:
单支列表,特点:元素可以为null,可以重复,有序。(如果添加元素会添加到末尾)
特殊的方法
public int indexOf(Object o) // 返回指定元素的索引(从左边开始)
public int lastIndexOf(Object o) // 返回指定元素的索引(从右边开始)
public Object clone() // 获得数组的浅拷贝
public E get(int index) // 按索引获得元素
public E set(int index, E element) // 按索引设置元素
public void add(int index, E element) // 按索引在指定位置插入元素
public E remove(int index) // 按索引在指定位置删除元素
ArrayList:
底层:对象数组Object[]
在底层是顺序表结构,可以按索引存取
LinkListed
底层:双端链表,实现Deque(双端队列)接口
可以插入null,线性表的链式存储结构
Map接口:
双支列表
int size(); // 键值对数量
boolean isEmpty();
boolean containsKey(Object key);
boolean containsValue(Object value);
V get(Object key);
V put(K key, V value);
V remove(Object key);
QUEUE 队列接口:
两套api
抛出异常|返回特殊值,记住返回特殊值的那套就行
队列尾进头出,典型的实现类LinkedList,即双端列表
还要注意的是peek查看的是头
典型应用:二叉树的层序遍历
抛出异常 | 返回特殊值 | |
---|---|---|
insert | add() | offer() |
remove | remove() | poll() |
exam | element() | peek() |
DEQUE 双端队列接口:
继承于QUEUE
也有两套api
抛出异常 | 返回特殊值 | |
---|---|---|
insert | addFirst() | offerFirst() |
remove | removeFirst() | pollFirst() |
exam | getFirst() | peekFirst() |
这里的First可以改为Last,从尾部弹出、进入
可以用作QUEUE和STASK
如果是QUEUE,一般使用offerLast() pollFirst() peekFirst() ,对应于QUEUE接口的offer() poll() peek();
如果是STASK,一般是使用addFirst(e)removeFirst()peekFirst(),或者使用相同的push()pop()和peek();
关于LinkedHashMap
HashMap 大家都清楚,底层是 数组 + 红黑树 + 链表 (不清楚也没有关系),同时其是无序的,而 LinkedHashMap 刚好就比 HashMap 多这一个功能,就是其提供 有序,并且,LinkedHashMap的有序可以按两种顺序排列,一种是按照插入的顺序,一种是按照读取的顺序(这个题目的示例就是告诉我们要按照读取的顺序进行排序),而其内部是靠 建立一个双向链表 来维护这个顺序的,在每次插入、删除后,都会调用一个函数来进行 双向链表的维护 ,准确的来说,是有三个函数来做这件事,这三个函数都统称为 回调函数 ,这三个函数分别是:
作者:jeromememory
链接:https://leetcode.cn/problems/lru-cache/solution/yuan-yu-linkedhashmapyuan-ma-by-jeromememory/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。