算法题必用的java类总结

作为一个想走前端的半吊子,刷算法题时很多java的类都不知道,导致思路受限。在这里总结一下这些类。

HashSet

特点:

HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。
HashSet 允许有 null 值。
HashSet 是无序的,即不会记录插入的顺序。
HashSet是Set的具体实现类。

常用方法:

HashSet是Set接口的典型实现,大多数时候使用Set集合时就是使用这个实现类:Set<Integer> list=new HashSet<>();
判断元素是否存在于集合当中:contains()
添加元素:add()
删除集合中的元素: remove()
删除集合中所有元素:clear
计算 HashSet 中的元素数量:size()

HashMap

特点

简单来说:HashMap就是一个字典,通过Key能够以O(1)的时间复杂度直接获取到Key对应的值(Value)。

常用方法

添加与修改:put(键名,键值)
删除单条数据:remove(键名)
清除全部数据clear()
判断 hashMap 是否为空:isEmpty()
检查 hashMap 中是否存在指定的 key 对应的映射关系:containsKey()
如果存在相应的key则返回其对应的value,否则返回给定的默认值:getOrDefault()

ArrayList

特点:

ArrayList是一个数组队列,相当于动态数组,可以不设置长度。
ArrayList能动态的增加和减少元素。

常用方法:

判断该ArrayList中是否包含指定的内容:contains()
增加元素:add()
返回ArrayList对象第 index 下标的元素的值: get(int index)
删除ArrayList中与给定的元素“相等”的且第一次出现的元素:remove()
以Object[]形式返回ArrayList中存储的数据元素:toArray()
排序: Collections.sort()
将list直接转为Object[] 数组:list.toArray()
将list转化为需要类型的数组:list.toArray(T[] a)
Integer类型ArrayList转为int数组:stream().mapToInt(Integer::intValue).toArray()

Arrays.copyOfRange

特点:

Arrays.copyOfRange(T[ ] original,int from,int to)
将一个原始的数组original,从下标from开始复制,复制到上标to,生成一个新的数组。
注意这里包括下标from,不包括上标to。比利用循环复制数组效率要高得多。

StringBuilder

StringBuilder的用法

特点

字符缓冲区。字符串是常量,它们的值在创建之后不能更改,字符串缓冲区支持可变的字符串

常用方法

追加数据:append()
换为String对象:toString()
向指定位置插入数据:insert()
删除指定位置的数据:deleteCharAt()
删除指定范围的数据(左闭右开):delete( )
将对象中的数据反转:reverse()

Stack

特点:

后进先出

常用方法:

入栈:push()
出栈:pop()
读取栈顶元素的值,而不移除:peek()
判断是否为空:isEmpty()empty()

Queue

特点:

先进先出

常用方法:

LinkedList类实现Queue接口
入队:add()offer()(当超出队列界限的时候,add()抛出异常,offer()直接返回false
移除并返回队列头部的元素:remove()
返回队列头部的元素:peek()
判断队列是否为空:isEmpty()

Deque

特点

双端队列,既可以当作栈使用,也可以当作队列使用

常用方法

Java数据结构之Deque(双端队列)
在这里插入图片描述

Java双向队列Deque栈与队列

PriorityQueue

特点

优先队列,先进优出。通过堆实现,通过完全二叉树实现的小顶堆(任意一个非叶子节点的权值,都不大于其左右子节点的权值),保证每次取出的元素都是队列中权值最小的(Java的优先队列每次取最小元素,C++的优先队列每次取最大元素)

常用方法

Java 优先队列(PriorityQueue)总结
在这里插入图片描述
new PriorityQueue<>((x, y) -> (y - x));:实现大顶堆

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值