【刷题遇到的一些常用处理方法汇总】

初始化静态最终集

private final static HashSet<Character> vowels = new HashSet<>(
        Arrays.asList('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'));

复制数组的一部分得到新数组

将一个原始的数组original,从下标from开始复制,复制到上标to,生成一个新的数组。左闭右开。要使用这个方法,首先要import java.util.*;可以借助这个函数把数组拆分。

int[] left = Arrays.copyOfRange(array, 0, mid);

把几个数转化为一个数组

Arrays.asList(num1,num2,num3);

String 与 StringBuilder转换

public String substring(int beginIndex)
public String substring(int beginIndex, int endIndex) //左闭右开
String s = "asdsfa";
int i = String.valueOf(123).length();//String.valueOf()将基本数据型态转换成 String
//String 转 StringBuilder
StringBuilder sb = new StringBuilder(s);
//StringBuilder 转 String
sb.toString( );
//StringBuilder其余常用函数
sb.append( );
sb.length( );
sb.insert(11,"11" );
sb.setCharAt(index,'a');
sb.charAt(index);

hashmap的使用

创建

HashMap<Integer, Integer> map = new Hashmap<>();
//添加/修改元素
map.put(num,count)
//如果遇到使用hashmap进行数量统计的情况
//getOrDefault()	获取指定 key 对应对 value,如果找不到 key ,则返回设置的默认值
map.put(num,map.getOrDefault(num,0)+1);
//get()	获取指定 key 对应对 value
map.get(num);


//新建一个map并把统计数组中元素出现个数
HashMap<Integer, Integer> map = new HashMap<>();
for(int i : nums){
     map.put(i, map.getOrDefault(i,0)+1);
}
//得到所有的键值对组成的Set, Set中是无序放置的
//Map.Entry是Map的一个内部接口,接口中有getKey(),getValue()方法
Set<Map.Entry<Integer,Integer>> entry = map.entrySet();
//新建List集合获取Set集合的所有元素("映射"对象)(顺序与Set集合一样)
List<Map.Entry<Integer,Integer>> list =new ArrayList<>(entry);
// 接下来的排序是list的专长了,重写sort方法
list.sort((o1,o2) -> o2.getValue()-o1.getValue());
//遍历得到前K的Key
for(int i=0;i<k;i++){
	ans[i] = list.get(i).getKey();
}

hashset的使用

HashSet<Listnode> hashsets = new HashSet<>();
hashsets.add(a);
hashsets.remove("Taobao");
sites.size();//计算大小
if(hashsets.contains(b)){
	return;
}

split()

s.split(" ");
//正则
s.split(" +");//+表示多个

队列

Queue<> q = new LinkedList<>();

//双端队列,既可以处理头,也可以处理尾
Deque<> d = new LinkedList<>();

//队列方法       等效方法
offer(e)      offer(e)/offerLast(e)  //进队列,将元素加入队列末尾
poll()        poll()/pollFirst()  //获取队列头的元素并移除
peek()        peek()/peekFirst()  //获取队列头的元素    
isEmpty() //判断是否为空

image

//优先级队列

//小根堆
        PriorityQueue<Map.Entry<Integer,Integer>> queue = new PriorityQueue<>((o1,o2)->o1.getValue()-o2.getValue());

Stack<> stack = new Stack<>();
boolean               isEmpty() // 判断当前栈是否为空
synchronized E        peek() //获得当前栈顶元素
synchronized E        pop() //获得当前栈顶元素并删除
             E        push(E object) //将元素加入栈顶
synchronized int      search(Object o)  //查找元素在栈中的位置,由栈低向栈顶方向数
posted @ 2022-03-01 10:30  tootooquan  阅读(40)  评论(0)    收藏  举报