java刷leedcode常用数据结构和方法

大部分copy自菜鸟教程
Deque

不建议使用Stack和Vector。使用Vector做类似的业务,在多线程应该使用java.util.concurrent.CopyOnWriteArrayList等而不是Vector;使用Stack做类似的业务,非线程的你可以选择linkedList、ArrayDeque(实现了Deque接口),多线程情况你可以选择java.util.concurrent.ConcurrentLinkedDeque 或者java.util.concurrent.ConcurrentLinkedQueue。无论是栈还是队列,JDK都是建议使用ArrayDeque而不是LinkedList实现。

Queue方法等效Deque方法
add(e)addLast(e)
offer(e)offerLast(e)
remove()removeFirst()
poll()pollFirst()
element()getFirst()
peek()peekFirst()

栈方法等效Deque方法
push(e)addFirst(e)
pop()removeFirst()
peek()peekFirst()

1、add()和offer():

add()和offer()都是向队列中添加一个元素。一些队列有大小限制,因此如果想在一个满的队列中加入一个新项,调用 add() 方法就会抛出一个 unchecked 异常,而调用 offer() 方法会返回 false。

2、poll()和remove():

remove() 和 poll() 方法都是从队列中删除第一个元素。如果队列元素为空,调用remove() 的行为与 Collection 接口的版本相似会抛出异常,但是新的 poll() 方法在用空集合调用时只是返回 null。

3、element() 和 peek() :

element() 和 peek() 用于在队列的头部查询元素。与 remove() 方法类似,在队列为空时, element() 抛出一个异常,而 peek() 返回 null。

String类常用方法
方法作用
char charAt(int index)返回字符串在index位置的字符
int length()返回字符串的长度
char[] toCharArray()将字符串转成一个字符数组并返回
String trim()返回删除前面和后面空白的字符串的副本
boolean isEmpty()字符串是否为空
boolean equals(String s)与字符串s比较是否相等(String类中已重载)
String[] split(String regex)根据regex分割字符串,返回分割后的字符串数组
String replace(char old, char new)用new字符替换字符串中所有old字符

StringBuffer类常用方法
方法作用
StringBuffer reverse()反转字符序列
int length()返回字符串的长度
char charAt(int index)返回字符串在index位置的字符
StringBuffer append(String s)在末尾追加字符串s
String toString()转为字符串
StringBuffer insert(int index, String s)在索引index处插入s的字符序列
StringBuffer replace(int start, int end, String s)用s替换start到end的字符序列

Arrays工具类常用方法
方法作用
int binarySearch(Object[] a, Object key)用二分查找算法在给定数组中搜索给定值的对象,返回索引
boolean equals(long[] a, long[] a2)两数组长度相等,内容相等
void fill(int[] a, int val)给数组赋值
void sort(Object[] a)给数组排序
String toString()转为字符串

StringBuilder类常用方法
方法作用
StringBuilder append(char c)追加字符
char charAt(int index)返回指定索引处的此序列中的 char
void setCharAt(int index)设置指定索引处的值
StringBuilder deleteCharAt(int index)删除指定索引处的值
StringBuilder reverse()反转

Collection工具类常用方法
方法作用
void reverse(List list)反转
void sort(List list, Comparator c)按Comparator的规则排序
void swap(List list, int i , int j)交换元素
void fill(List list, Object obj)用obj替换所有的元素
int max(Collection c)返回最大的元素
int binarySearch(List list, Object key)二分查找返回索引
int frequency(Collection c, Object obj)统计元素出现的次数

LinkedList类常用方法
方法作用
public boolean add(E e)链表末尾添加元素,返回是否成功,成功为 true,失败为 false。
public void add(int index, E element)向指定位置插入元素。
public boolean addAll(Collection c)将一个集合的所有元素添加到链表后面,返回是否成功,成功为 true,失败为 false。
public boolean addAll(int index, Collection c)将一个集合的所有元素添加到链表的指定位置后面,返回是否成功,成功为 true,失败为 false。
public void addFirst(E e)元素添加到头部。
public void addLast(E e)元素添加到尾部。
public boolean offer(E e)向链表末尾添加元素,返回是否成功,成功为 true,失败为 false。
public boolean offerFirst(E e)头部插入元素,返回是否成功,成功为 true,失败为 false。
public boolean offerLast(E e)尾部插入元素,返回是否成功,成功为 true,失败为 false。
public void clear()清空链表。
public E removeFirst()删除并返回第一个元素。
public E removeLast()删除并返回最后一个元素。
public boolean remove(Object o)删除某一元素,返回是否成功,成功为 true,失败为 false。
public E remove(int index)删除指定位置的元素。
public E poll()删除并返回第一个元素。
public E remove()删除并返回第一个元素。
public boolean contains(Object o)判断是否含有某一元素。
public E get(int index)返回指定位置的元素。
public E getFirst()返回第一个元素。
public E getLast()返回最后一个元素。
public int indexOf(Object o)查找指定元素从前往后第一次出现的索引。
public int lastIndexOf(Object o)查找指定元素最后一次出现的索引。
public E peek()返回第一个元素。
public E element()返回第一个元素。
public E peekFirst()返回头部元素。
public E peekLast()返回尾部元素。
public E set(int index, E element)设置指定位置的元素。
public Object clone()克隆该列表。
public Iterator descendingIterator()返回倒序迭代器。
public int size()返回链表元素个数。
public ListIterator listIterator(int index)返回从指定位置开始到末尾的迭代器。
public Object[] toArray()返回一个由链表元素组成的数组。
public T[] toArray(T[] a)返回一个由链表元素转换类型而成的数组。

HashMap方法
方法作用
clear()删除 hashMap 中的所有键/值对
clone()复制一份 hashMap
isEmpty()判断 hashMap 是否为空
size()计算 hashMap 中键/值对的数量
put()将键/值对添加到 hashMap 中
putAll()将所有键/值对添加到 hashMap 中
putIfAbsent()如果 hashMap 中不存在指定的键,则将指定的键/值对插入到 hashMap 中。
remove()删除 hashMap 中指定键 key 的映射关系
containsKey()检查 hashMap 中是否存在指定的 key 对应的映射关系。
containsValue()检查 hashMap 中是否存在指定的 value 对应的映射关系。
replace()替换 hashMap 中是指定的 key 对应的 value。
replaceAll()将 hashMap 中的所有映射关系替换成给定的函数所执行的结果。
get()获取指定 key 对应对 value
getOrDefault()获取指定 key 对应对 value,如果找不到 key ,则返回设置的默认值
forEach()对 hashMap 中的每个映射执行指定的操作。
entrySet()返回 hashMap 中所有映射项的集合集合视图。
keySet()返回 hashMap 中所有 key 组成的集合视图。
values()返回 hashMap 中存在的所有 value 值。
merge()添加键值对到 hashMap 中
compute()对 hashMap 中指定 key 的值进行重新计算
computeIfAbsent()对 hashMap 中指定 key 的值进行重新计算,如果不存在这个 key,则添加到 hasMap 中
computeIfPresent()对 hashMap 中指定 key 的值进行重新计算,前提是该 key 存在于 hashMap 中。

PriorityQueue

建队列样例:

  // 优先级队列,最⼩堆
  PriorityQueue<ListNode> pq = new PriorityQueue<>((a, b)->(a.val - b.val));

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值