0. 前言
预防好久不碰java之后连list都不会用了。
1. 基本语法
1.1 声明一个list
一般我用以下方式声明一个list
List<Integer> list0 = new ArrayList<>();
List为父类,ArrayList为子类,<Integer>为List中的元素类型,list0为对象名。ArrayList<>中的尖括号不用声明元素类型,会自动补全。这种方式是使用子类对象去定义一个父类对象。
另外List还有LinkList,从名字可以看出ArrayList是通过数组实现的,而LinkList是使用链表实现的。
1.2 获取list中的元素个数
int len = list0.size();
1.3 添加、删除、获取元素
list0.add(n); // 在末尾添加一个元素n
list0.remove(i); // 删除索引为i的元素
int num = list0.get(i); // 获取索引为i的元素
2. 使用实例
2.1 杨辉三角
题目见力扣。
示例:
输入: 5
输出:
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
上代码
class Solution {
public List<List<Integer>> generate(int numRows) {
// 创建一个元素为List<Integer>的List
List<List<Integer>> res = new ArrayList<>();
// 创建一个元素为Integer的List
List<Integer> list0 = new ArrayList<>();
list0.add(1);
res.add(list0); // 结果中添加[1]
if(numRows == 1) return res;
List<Integer> list1 = new ArrayList<>();
list1.add(1);
list1.add(1);
res.add(list1); // 结果中添加[1,1]
for(int i = 2; i < numRows; i++){
List<Integer> listn = new ArrayList<>();
listn.add(1);
for(int j = 0; j < list1.size()-1; j++){
// 获取上行的第j和第j+1个元素
// 基于上一行获取当前行的元素
listn.add(list1.get(j)+list1.get(j+1));
}
listn.add(1);
res.add(listn); // 结果中添加第n行
list1 = listn; // 保存当前行
}
return res;
}
}