写在前面,此文章用于记录使用java语言进行LeetCode刷题过程中经常使用到的工具类,方便刷题的时候进行使用方法的查询。

1.List系列:

ArrayList:

LinkedList:

PriorityQueue(优先队列)

ArrayDeque(可以用于栈和队列)

2.Hash系列:

HashMap:

TreeMap(用于排序的Hash)

HashSet:

3.String系列:

StringBuilder:

ArrayList:

函数

解释

add(Object element)

往里面增加元素

size()

返回List里面的元素的数量

get(int index)

获得下标为index的元素的值(从0开始计算)

add(int index, Object element)

在下标为index的位置进行值为element的插入

set(int i, Object element)

将下标为index的值替换为element,并且会将这个位置原来的值进行返回

clear()

将ArrayList进行清空

contains(Object o)

判断list里面是否含有o元素的这个值

isEmpty()

判断列表是否包含元素,不包含元素就返回true,否则返回false

remove(int index)

移除列表中指定位置的元素,并返回被删元素

remove(Object o)

移除集合中第一次出现的指定元素,移除成功返回true,移除失败返回false

ArrayList支持foreach进行遍历

toArray(T[] a)

将ArrayList转换为指定类型数组的唯一方式,当不带参数时只能返回一个Object类型的数组,在实际中没有什么作用,举例,当我们想要使用int[] a1作为ArrayList的接受结果时,我们可以使用a.toArray(a1),这样值就传递到了a1中来;也可以使用另外一个方式来进行接收。如String[] ame = a.toArray(new String[a.size()])

LinkedList:
当我们想使用Queue的时候,我们只能使用LinkedList而不能使用ArrayList,使用ArrayList会直接报错

函数

效果

add(E e)

在链表后面添加一个元素

addFirst(E e)

在链表头部插入一个元素

addLast(E e)

在链表尾部添加一个元素

push(E e)

与addFirst方法一样

offer(E e)

在链表尾部插入一个元素

remove()

移除链表第一个元素,即和add可以实现FIFO

此行用于解释上个函数的使用方法

当使用Queue进行初始化时,remove()函数可以不用带参数,当使用list进行初始化时,remove()函数必须要带参数,否则会报错

remove(E e)

移除指定元素

PriorityQueue:默认的排序方式是按照值的大小来进行排序的(即最小堆,在使用最小堆解决问题的时候也可以使用优先队列来解决)

函数

效果

public boolean add(E e)

将指定的元素插入此优先级队列。不能添加null元素。

public boolean offer(E e)

将指定的元素插入此优先级队列。不能添加null元素。

peek()

获取队列顶部元素——仅仅获取,没有删除

element()

获取堆顶元素——队列为空抛异常NoSuchElementException(),这里和peek的差别就是,当堆顶没有元素的时候,使用peek的返回值是null,使用element的返回是抛出一个异常

remove()

删除堆顶元素——队列为空的时候抛出异常NoSuchElementException()

poll()

删除元素:删除堆顶元素——队列为空的时候返回null,在调用函数的时候,poll和remove都可以拿到堆顶元素

ArrayDeque:ArrayDeque是一个双端队列,既可以当栈来使用,也可以当队列来使用。且栈和队列的操作效率均比对应的Stack和Queue类要高

函数

效果

队列操作:

poll()

队列操作,与普通队列Queue相同

remove()

与普通队列相同

peek()

获取第一个元素,如果没有返回null

add(E e)

在队列尾部添加一个元素

offer(E e)

在队列尾部添加一个元素,并返回是否成功

栈操作

push(E e)

栈顶添加一个元素

pop(E e)

栈顶移除一个元素,如果没有元素则抛出异常,可以通过pop函数来获得移除的元素的值

其它

size()

获取队列中元素个数

isEmpty()

判断队列是否为空

contains()

判断队列中是否存在该元素

toArray()

转成数组

clear()

清空队列

clone()

克隆一个新的队列

HashMap:

函数

效果

getOrDefault(key,value)

返回 key 相映射的的 value,如果给定的 key 在映射关系中找不到,则返回指定的默认值。常见用法,List< Integer> ame = bme.getOrDefault(1,new ArrayList<>());这样使用,当bme这个Hash表里面没有1这个值的时候,会创建一个新的ame列表。但注意,这里面的ame列表并不是原来的Value的那个内存空间,即如果对ame进行操作以后,想把ame和1在存回去,需要使用bme.put(1,ame)才行。

get(Object key)

返回key所对应的键值Value,同时注意,如果查询的这对key-value键值对不存在,不会报错,而是会返回一个null的空值

put(Object key,Object value)

存放key-value键值对,如果已经存在,则会对原来的键值对进行覆盖

int size()

返回HashMap里面包含的键值对的数量

entrySet()

和keySet同理,但是要使用一个Entry对象来对数据进行接收,和foreach同作用。使用例子:for(Entry<String, Integer> entry: numbers.entrySet()){},其中,numbers的类型就是<String,Integer>

remove(Object o)

输出key值为o的一对键值对

TreeMap:适用于需要排序的HashMap函数,默认的遍历顺序就是按照Key值的自然大小顺序来进行排序的(默认是按照升序排序进行排序的)。

函数

效果

keySet()

用于Foreach进行遍历

int size()

返回TreeMap的键值对大小数目

containsKey(Object o)

是否含有键值为o的键值对,如果有就返回true,如果没有返回false

get(Object o)

获得o所对应的value值

put(Object o,Object i)

放入键值对o-i,如果map里面已经存在了对应key的键值对,则对其进行覆盖

putAll(Map map)

将指定的map放入该TreeMap中

clear()

清空TreeMap中的所有元素

remove(Object key)

从TreeMap中移除指定key所对应的映射

HashSet:

函数

效果

add(Object o)

添加值到HashSet里

size()

返回HashSet的所含值的数目

remove(Object o)

删除set集合中的元素,删除成功返回True,删除失败返回false

isEmpty()

判断Set是否为空

clear()

清空set内所有的元素

contains(Object o)

set里面是否含有元素o

retainAll(Set c)

起到取交的作用,比如,我们目前有两个Set分别为a,b。我们想知道a与b的交集是什么,我们可以使用a.retainAll(b)。这样a集合里面的值就变成了原来a集合和b集合相交所得到的集合

StringBuilder:

函数

效果

append(Object o)

将o对象追加到序列中

capacity()

返回当前的容量

int length()

返回长度(字符数)

char charAt(int index)

返回char指定索引处的序列中的值

delete(int start, int end)

删除编号从start到end的字符,包括start不包括end

deleteCharAt(int index)

删除位与index位置 处的字符

int indexOf(String str

返回指定字符串第一次出现的索引

replace(int start,int end,String str)

用str字符串进行相应位置的替换

reverse()

使里面的字符进行翻转

String toString()

将StringBuilder转换为String

subString(int start,int end)

将start-end转换为一个String

subString(int start)

同上

setCharAt(int index,char ch)

将该构建器的指定索引位置设置为新的字符

delete()

用于将整个StringBuilder进行清空,使用方式(假设a是我们的StringBuilder容器):a.delete(0,a.length())即可直接将a里面的所有原来数据进行删除