本博客主要记录笔试中常考的一些知识点或者技巧。
1. 各类Java容器的用法
图片:https://github.com/CyC2018/CS-Notes/blob/master/notes/Java%20%E5%AE%B9%E5%99%A8.md
数组
数组是很基础的一种数据结构,这里我指记录数组在做题中的一些小用途。
public static void main(String[] args) {
//两种数组初始化赋值的方法
Integer[] nums = {
1, 2 ,3};
nums = new Integer[]{
1, 2, 4, 3};
//数组从小到大排序
Arrays.sort(nums);
//数组从大到小排序
Arrays.sort(nums, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2.compareTo(o1);
}
});
//把数组转化成流再操作
Arrays.stream(nums).forEach((ele)-> System.out.println(ele));
// 4
// 3
// 2
// 1
//把数组转化成List
List<Integer> list = Arrays.asList(nums);
}
List
List用的最多的是ArrayList和LinkedList,ArrayList底层实现是数组,LinkedList底层实现是双向链表,此处指介绍容器用法,原理可参考:https://github.com/CyC2018/CS-Notes/blob/master/notes/Java%20%E5%AE%B9%E5%99%A8.md。
1. ArrayList
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("aaa");
list.add("ccc");
list.add("bbb");
//get获取下标对应值
System.out.println(list.get(1));
//set修改下标对应值
list.set(1, "ddd");
//list转数组
//这里如果没有传入String数组,返回的就是Object数组
String[] str = list.toArray(new String[list.size()]);
//addAll将其他容器的元素放到List中
Set<String> set = new TreeSet<>();
set.add("aaa");
set.add("ccc");
set.add("bbb");
list.addAll(set);
System.out.println(list);
// [aaa, ddd, aaa, bbb, ccc]
//sort排序
Collections.sort(list);
//forEach遍历
list.forEach((ele)-> System.out.println(ele));
}
2. LinkedList
LinkedList和ArrayList有部分方法同名(虽然实现不一样),此处只列出LinkedList特有的方法。
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>();
list.add("aaa");
list.add("ccc");
list.add("bbb");
list.addFirst("1");
list.addLast("9");
list.removeFirst();
list.removeLast();
}
Map
1. HashMap
最常用的Map是HashMap,此处只列出基本用法。
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("aaa", 1);
map.put("bbb", 3);
map.put("ccc", 2);
//判断是否有key,返回boolean
boolean contain = map.containsKey("bbb");
//判断是否有key,有则返回value,否则返回null
System.out