Java语言笔记

Java数据结构比Go多,很多数据结构(如优先级队列)Go都需要自己手写。所以使用一段时间Go后,刷题又转为Java了。

1. 基本库类

  1. Integer最大值最小值:
Integer.MAX_VALUE
Integer.MIN_VALUE
  1. Math类:

    • Math.max(),Math.min()
  2. 数组排序:

    • Arrays.sort(nums)
    • 自定义排序器:只能对包装类型,比如Integer,int[],使用lambda表达式:Arrays.sort(nums,(a,b)->b-a)
    • 一般情况下,自定义排序器a-b即可。但对于某些极端的测试样例,a-b可能会溢出。所以,用a<b?-1:1更好
    • 对于基本数据类型,用自定义排序(比如int[]):Arrays.stream(nums).boxed().sorted((a,b)->{b-a}).mapToInt(i->i).toArray()(这里的boxed()是将stream转化为T的包装类型的stream)
  3. 显式类型转换:包装类.valueOf(),比如string转int,用Integer.valueOf()

  4. list反转:Collections.reverse(list)

2. 数据结构

  1. 列表List

    • 常用方法:add(),remove(),get(),set(index,value)
    • list转数组:list.toArray(new int[size])需要声明数组的形式
  2. 队列Queue

    • 实现类:LinkedList,ArrayDeque
    • LinkedList对于add()无空值判断,而ArrayDeque有空值判断。
    • 常见方法:offer(),peek(),remove(),poll()
  3. 双端队列Deque

    • 实现类有ArrayDeque和LinkedList
    • 接口:peekFirst,pollFirst,addFirst,peekLast,pollLast,addLast,栈接口:peek(=peekFirst),poll(=pollFirst),push(=addFirst)
  4. 优先级队列PriorityQueue

    • 自定义排序:用Comparator的compare(a,b),a-b是默认的升序,b-a是降序。如大顶堆,就用b-a
// 大顶堆
PriorityQueue<Integer> queue=new PriorityQueue<>(new Comparator<Integer>(){
	public int compare(int a,int b){
		return b-a;
	}
});
  1. 哈希表HashMap
    • 添加: put(key,value)
    • 获取元素: get(key)getOrDefault(key,defaultValue)
    • 删除: remove(key),清空: clear()
    • 是否key存在:containsKey(key)
    • 遍历: keySet()用get(key),或
for(Map.Entry<K,V> e:map.entrySet()){
	e.getKey()
	e.getValue()
}
  1. 哈希集合HashSet
    • 添加 add()
    • 是否存在 contains()
    • 删除 remove()

3. 字符串

  1. 常用操作:

    • 遍历字符串:charAt()
    • length():长度
    • setCharAt(i,ch)
  2. 字符串不可变,涉及频繁的修改字符串,应使用StringBuilder(线程不安全,快)和StringBuffer(线程安全,慢)。方法主要有:

    • append() 在尾部添加字符串
    • deleteCharAt(i) 删除下标i
    • toString() 转为字符串
  3. String和char[]互相转化:

    • String -> char[]: String s; char[] arr=s.toCharArray()
    • char[] -> String: char[] arr; String s=new String(arr)
  4. 子串截取 substring(startIndex,endIndex)(endIndex不包括)

posted @ 2022-01-21 12:13  livingsu  阅读(56)  评论(0)    收藏  举报