首选要注意入参判断
数组&容器
长度
int[] array = new int[10] ;
array.length
注意不要和String.length()弄混。
常用的类型转换
Integer.parseInt(String)
String.valueOf(Int)
数据比较
非基本类型的实例间比较,要用equals。如果是自定义类,需要重写equals方法。
ArrayList和HashSet
HashSet内部使用的是HashMap。
ArrayList可以重复引用,HashSet是不重复存放。
都是数组存储,但HashSet通过HashCode确定下标。
ArrayList.add(V) / ArrayList.get(int)
注意:
HashSet存储元素的顺序并不是按照存入时的顺序(和List显然不同) 是按照哈希值来存的所以取数据也是按照哈希值取得。
HashMap
Map<K,V> hashmap = new HashMap<>();
判断key是否相等:hashCode对比,如果相同 -> equals对比
HashMap.put(K, V) / HashMap.get(K)
要注意,HashMap.get可能返回null
Queue
java中一般将LinkedList作为Queue使用。
LinkedList.poll() //出队列,取队列头元素
LinkedList.add(V) //入队,进入队尾
LinkedList.push(V) //插入队头(类似于Stack,后入)
LinkedList.offer(V) / LinkedList.get(int) / LinkedList.contains / LinkedList.indexOf(V)
在容量已满的情况下,add() 方法会抛出IllegalStateException异常,offer() 方法只会返回 false 。
Stack
Stack.empty()
Stack.peek();
字符
判断是否是字符或数字:Character.isLetterOrDigit(char)
转换为小写:Character.toLowerCase(char)
字符串
String.charAt(int) //通过下标找字符
String.indexOf(String) //通过子字符串找下标
String.substring(start, end) //获取子字符串,注意参数是左闭右开
String.split(String) 、String.split(String, int) //通过指定分割符,将String分割成数组
StringBuffer.replace(int start, int end, String) //替换子字符串
String.split后,数组元素可能是""
链表
1,翻转链表之后,注意原先的head->next要置null,否则会行程循环链表
2,注意遍历链表时null判断,防止空指针
3,翻转链表,关键在于保存pre,cur和cur.next,用这三个节点不断循环翻转
网友评论