List<Integer> list = new ArrayList<Integer>()

1、解释

List list = new ArrayList()

:调用 List接口里面的内置函数,add,get等方法;

List< Integer>

List是一个接口

<>表示了List里面放的对象是什么类型的,这样写就表示了,你List里面放的必须是Integer类型的。

2、提升

常见面试题:

List<List>的作用是什么?

List指的是存int类型数据的列表,List<List>指的是存【int类型数据的列表】类型数据的列表------就是这个母列表存子列表,其子列表存int类型的数据。

用法

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);
    }
}
posted @   三千山人  阅读(650)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示