本文最后更新于323 天前,其中的信息可能已经过时,如有错误请发送邮件到15578243672@163.com
- 数组 数据类型 + []
- 集合下两大接口 List与Map
Array
JAVA中的数组是不可变的,这意味着我们在创建数组的时候就一定要指定好数组的大小,声明方式如下,此外,如果有python基础,记住{}在Java中才是数组,[]已经是列表了
int[] a = new int[10];//声明大小为10的数组
int[][] b = new int[]{{1,2,3},{2,3,4}}//声明的同时初始化
因为在python中数组也就是列表,在python中是可变的,千万不要搞混,如果不在声明的时候进行初始化的话,我们就得通过迭代器和循环完成初始化了(这里之后加入一个链接),经常会搞混的就是对Java中的数组使用add方法,如果你有学习过python的话,如果我们要对数组进行操作的话,就得使用Arrays工具类,常用的方法如下
| 方法名 | 功能 | 示例 | 常见场景 |
|---|---|---|---|
Arrays.sort() | 数组排序(默认升序) | Arrays.sort(nums); | 排序后双指针、前缀和等题 |
Arrays.sort(nums, Collections.reverseOrder()) | 降序排序(需要包装类) | Integer[] arr = ...; Arrays.sort(arr, Collections.reverseOrder()); | 排序题中的降序处理 |
Arrays.copyOf(arr, newLength) | 复制数组(可扩展/截断) | int[] b = Arrays.copyOf(a, 5); | 拷贝前 k 个元素 |
Arrays.copyOfRange(arr, from, to) | 复制子数组(区间 [from, to)) | int[] sub = Arrays.copyOfRange(a, 1, 4); | 子数组处理 |
Arrays.equals(a, b) | 比较两个数组是否元素一致 | Arrays.equals(a, b) | 判断两个结果是否一样 |
Arrays.fill(arr, val) | 将整个数组填充为某值 | Arrays.fill(dp, -1); | 初始化 dp 数组 |
Arrays.toString(arr) | 数组转字符串打印 | System.out.println(Arrays.toString(arr)); | 调试输出 |
Arrays.asList(...) | 把一组元素转为 List | Arrays.asList(1, 2, 3),如果要传入数组,必须得是包装类型 | 快速构造列表 |
Arrays.binarySearch(arr, key) | 在有序数组中二分查找 | int i = Arrays.binarySearch(a, x); | 有序数组查找目标值 |
集合
集合下的List接口,List也被称为列表
List只是一个接口,有好几个常用的实现类,具体如下,(之后可能会进行补充)
| 实现类 | 特点 | 适用环境 |
| ArrayList | 底层实现是数组,也就是意味着我们可以通过下标访问值,并且具有自动扩容的功能(python哈哈) | 频繁访问数据的情况,但如果你要频繁删除和添加的话,是比不过LinkedList(链表和数组的区别) |
| LinkedList | 底层是链表,同时我们也可以用这个来声明栈和队列 | 频繁删除的情况 |
以下是最近刷题过程中进程使用到的方法
List<> a =new ArrayList<>(); //声明这一块
a.add(i);
a.get(i);
a.set(i,a.get(i)+1);//实现自增
a.isEmpty();
a.toArray();
a.size();
a.remove();
a.contains();
如果要复习这个部分的话,可以从增删改查这几个方面开始联想
集合下的Set接口
可以作为set也可以作为哈希表









