List<Integer> list = new ArrayList<Integer>()
1、解释
List list = new ArrayList()
:调用 List接口里面的内置函数,add,get等方法;
List< Integer>
List是一个接口
<>表示了List里面放的对象是什么类型的,这样写就表示了,你List里面放的必须是Integer类型的。
2、提升
常见面试题:
List<List
List
用法
package apackage;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.LinkedList;
class Solution {
public static void main(String[] args) throws ClassNotFoundException {
/* 初始化 */
List<List<Integer>> list = new ArrayList<>();
/* 添加list的层和值 */
/* 方法一 */
list.add(new LinkedList<>()); //先添加层数
list.get(0).add(1); //后在指定层数进行添值:list.get(layers).add(value);
list.add(new LinkedList<>());
list.get(1).add(11);
list.get(1).add(12); //插入第layers+1层的结尾
list.get(1).add(0,13);//插入第layers+1层的开头
/* 方法二 */
list.add(new LinkedList<>(Arrays.asList(1, 2, 3, 6)));
// list.get(2).add(31);//注明:这种表达是错误的,第三层已经由Arrays.asList赋值,无法使用list.get(2).add(31)这个语句
/* 输出list的层数 */
System.out.println("list的层数为: " + list.size());
/*list元素输出*/
System.out.println("方法一:输出list元素");
for (int i = 0; i < list.size(); i++) {
System.out.println(Arrays.toString(list.get(i).toArray()));
}
System.out.println("方法二:输出list元素");
for (int i = 0; i < list.size(); i++) {
List<Integer> item = list.get(i); //item存第i+1层的所有元素
for (int j = 0; j < item.size(); j++) {
System.out.print(item.get(j)+",");
}
System.out.println();
}
/* list元素的删除 */
list.remove(1);//list.remove(i)删除第i+1层所有元素
list.get(1).remove(0); //list.get(i).remove(j)删除第i+1层的第j+1个元素
System.out.println("输出删除后的结果");
for (int i = 0; i < list.size(); i++) {
System.out.println(Arrays.toString(list.get(i).toArray()));
}
}
}
例题
102. Binary Tree Level Order Traversal
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> res = new ArrayList<>();
helper(res, root, 0);
return res;
}
private void helper(List<List<Integer>> res, TreeNode root, int depth) {
if (root == null) return;
if (res.size() == depth) res.add(new LinkedList<>());
res.get(depth).add(root.val);
helper(res, root.left, depth + 1);
helper(res, root.right, depth + 1);
}
}
103. Binary Tree Zigzag Level Order Traversal
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
List<List<Integer>> list = new ArrayList<>();
if(root == null) return list;
helper(root,list,0);
return list;
}
private void helper(TreeNode root,List<List<Integer>> list,int length){
if(root == null) return ;
if(length == list.size()) list.add(new LinkedList<>());
if(length%2==0) list.get(length).add(root.val);
else list.get(length).add(0,root.val);
helper(root.left,list,length+1);
helper(root.right,list,length+1);
}
}