秋招面试准备(三)Java容器(未完待续)

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查看的是头
典型应用:二叉树的层序遍历

抛出异常返回特殊值
insertadd()offer()
removeremove()poll()
examelement()peek()

DEQUE 双端队列接口:
继承于QUEUE
也有两套api

抛出异常返回特殊值
insertaddFirst()offerFirst()
removeremoveFirst()pollFirst()
examgetFirst()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)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值