轻松掌握List

包装类

包装类是根据基本类型出现的,八大基本类型对应着八种包装类:
在这里插入图片描述
要注意的是:String 不是包装类。包装类的好处在于:可以完成对数据的操作。例如:把字符串变为整形:

public static void main(String[] args) {
    String str = "123";
    int ret = Integer.valueOf(str);
    System.out.println(ret+1);
}

运行结果如下:
在这里插入图片描述

装箱与拆箱(装包与拆包)

  • 装箱:把简单数据类型变为包装类类型
  • 拆箱:把包装类类型变为简单数据类型

代码示例,这里是隐式的:

public static void main(String[] args) {
    //装箱
    Integer a = 123;
    //拆箱
    int b = a;//隐式的:因为把 Integer 变为 int 了
    System.out.println(a+"   "+b);
}

运行结果如下:
在这里插入图片描述
下面我们通过 powershell 窗口来看编译的过程:
在这里插入图片描述
可以看到,画圈的部分就是两次过程。第一次是通过 Integer 的 valueOf 来把 123 变成 Integer 类。第二次则是通过 Integer 的 intValue 来变成 int 类型。下面的就是字符串的拼接了。

显式拆包
通过直接将方法写出来,一看就明白了的方法就是显式的:

public static void main(String[] args) {
    //这里就是显式的装包
    Integer a2 = Integer.valueOf(123);
    Integer a3 = new Integer(123);
    //显式的拆包
    int b2 = a2.intValue();
    double d = a2.doubleValue();
}

阿里面试题

下面输出是否相等:

public static void main(String[] args) {
    Integer a = 123;
    Integer b = 123;
    System.out.println(a == b);
}

运行结果如下:
在这里插入图片描述
这里为 true ,如果把 a 和 b 换成 129 呢?

public static void main(String[] args) {
    Integer a = 129;
    Integer b = 129;
    System.out.println(a == b);
}

运行结果如下:
在这里插入图片描述
这里就变成了 false 了。遇到问题,从焦点出发:因为这里是装箱,底层是 valueOf ,所以就从 valueOf 出发。valueOf 的范围是:[-128……127] ,就意味着取值在这个范围内就是 true ,如果出了范围的话就会 new 一个对象,所以 new 了对象之后就是 false 了。

List

List 使用

在使用 List 的时候,后面括号可以加参数,也可以不加参数,加的参数是表示容量大小:

public static void main(String[] args) {
    List<String> list1 = new ArrayList<>(20);
    List<String> list2 = new ArrayList<>();
}

List 是一个很大的类,这里用它下层的 ArrayList :

public static void main(String[] args) {
    ArrayList<String> list2 = new ArrayList<>();
    list2.add("hello");
    list2.add("word");
    list2.add("123");
    System.out.println(list2);
    ArrayList<String> list3 = new ArrayList<>(list2);
    System.out.println(list3);
}

运行结果如下:
在这里插入图片描述
可以使用另外一个 Array List 对 list 初始化:这里的 list3 就是用 list2 来进行初始化。输出的时候,是按照字符串的形式来输出的。

List 的多种输出方式

直接通过字符串输出

代码示例:

public static void main(String[] args) {
    ArrayList<String> list2 = new ArrayList<>();
    list2.add("hello");
    list2.add("word");
    list2.add("123");
    System.out.println(list2);
}

运行结果如下:
在这里插入图片描述
通过 System.out.println(); 直接输出。

通过 for 循环打印

代码如下:

public static void main(String[] args) {
    ArrayList<String> list2 = new ArrayList<>();
    list2.add("hello");
    list2.add("word");
    list2.add("123");
    for (int i = 0; i < list2.size(); i++){
        System.out.println(list2.get(i));
    }
}

输出结果如下:
在这里插入图片描述

通过 foreach 来输出

代码如下:

public static void main(String[] args) {
    ArrayList<String> list2 = new ArrayList<>();
    list2.add("hello");
    list2.add("word");
    list2.add("123");
    for (String s:list2) {
        System.out.println(s);
    }
}

运行结果如下:
在这里插入图片描述

通过迭代器打印

通过使用 List 的方法:iterator 来完成输出。代码如下:

public static void main(String[] args) {
    ArrayList<String> list2 = new ArrayList<>();
    list2.add("hello");
    list2.add("word");
    list2.add("123");
    System.out.println("迭代器打印");
    Iterator<String> i = list2.iterator();
    while (i.hasNext()) {
        System.out.println(i.next());
    }
}

运行结果如下:
在这里插入图片描述

专门打印 List 的迭代器

迭代器 iterator 可以专门来打印 List 。代码如下:

public static void main(String[] args) {
    ArrayList<String> list2 = new ArrayList<>();
    list2.add("hello");
    list2.add("word");
    list2.add("123");
    System.out.println("迭代器 List 相关打印");
    ListIterator<String> i2 = list2.listIterator();
    while (i2.hasNext()) {
        System.out.println(i2.next());//因为 i 指向空的一个 所以 next 就是下一个元素
    }
}

在这里插入图片描述

ListIterator 和 Iterator 的关系

通过在 IDEA 编译器当中查看可以发现两者的关系如下:
在这里插入图片描述
ListIterator 是专门用来给 List 输出的。ListIterator 可以在输出的时候进行 add 、remove 不过要先迭代出所有元素,然后根据要求去进行增加或者删除。

删除代码示例

public static void main(String[] args) {
    ArrayList<String> list2 = new ArrayList<>();
    list2.add("hello");
    list2.add("word");
    list2.add("123");
    Iterator<String> i = list2.iterator();
    while (i.hasNext()) {
        String ret = i.next();
        if (ret.equals("hello")) {
            i.remove();
        }else {
            System.out.println(ret);
        }
    }
    System.out.println(list2);
}

运行结果如下:
在这里插入图片描述
增加代码示例

public static void main(String[] args) {
    ArrayList<String> list2 = new ArrayList<>();
    list2.add("hello");
    list2.add("word");
    list2.add("123");
    System.out.println("迭代器 List 相关打印");
    ListIterator<String> i2 = list2.listIterator();
    while (i2.hasNext()) {
        String ret = i2.next();
        if (ret.equals("hello")) {
        i2.add("llllll");
        } else {
            System.out.println(ret);
        }
    }
    System.out.println(list2);
}

要注意的是:在 add 的时候,是增加在当前元素的下一个位置。运行结果如下:
在这里插入图片描述

List 的 add

默认 add

List 当中的 add 方法,默认是放在最后一个位置的:

public static void main(String[] args) {
    //add 方法 默认是放到数组的最后一个位置的
    ArrayList<String> list = new ArrayList<>();
    list.add("a");
    list.add("b");
    list.add("c");
    System.out.println(list);
}

运行结果如下:
在这里插入图片描述

通过增加一个参数 index

通过在 add 方法放第一次参数,将元素放到某个位置下面:

public static void main(String[] args) {
    ArrayList<String> list = new ArrayList<>();
    list.add("a");
    list.add("b");
    list.add("c");
    System.out.println(list);
    list.add(0,"Lockey");
    System.out.println(list);
}

运行结果如下:
在这里插入图片描述

把一个 List 放在另一个 List 后面

通过 List 的方法 addALL 来完成,代码如下:

public static void main(String[] args) {
    ArrayList<String> list = new ArrayList<>();
    list.add("a");
    list.add("b");
    list.add("c");
    System.out.println(list);
    ArrayList<String> list1 = new ArrayList<>();
    list1.add("qwe");
    list1.add("rty");
    list1.addAll(list);
    System.out.println(list1);
}

运行结果如下:
在这里插入图片描述

删除某个值

通过 remove 方法来完成删除:

public static void main9(String[] args) {
    ArrayList<String> list = new ArrayList<>();
    list.add("a");
    list.add("b");
    list.add("c");
    System.out.println(list);
    boolean flag = list.remove("a");
    System.out.println(flag);
    System.out.println(list);
}

运行结果如下:
在这里插入图片描述

获取某个下标的值

通过 get 方法来完成获取:

public static void main(String[] args) {
    ArrayList<String> list = new ArrayList<>();
    list.add("a");
    list.add("b");
    list.add("c");
    String ret = list.get(1);
    System.out.println(ret);
}

运行结果如下:
在这里插入图片描述

更改某个位置的值

通过 set 方法来完成:

public static void main(String[] args) {
    ArrayList<String> list = new ArrayList<>();
    list.add("a");
    list.add("b");
    list.add("c");
    list.set(1,"d");
    System.out.println(list);
}

运行结果如下:
在这里插入图片描述

清空 List

通过 clear 方法来完成:

public static void main(String[] args) {
    ArrayList<String> list = new ArrayList<>();
    list.add("a");
    list.add("b");
    list.add("c");
    list.clear();
    System.out.println(list);
}

运行结果如下:
在这里插入图片描述

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lockey-s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值