【刷题遇到的一些常用处理方法汇总】
初始化静态最终集
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() //判断是否为空
//优先级队列
//小根堆
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) //查找元素在栈中的位置,由栈低向栈顶方向数