Chp15-List

目录

集合的概念

集合的特点

List存储特点

List的常用实现类

创建

常用方法

泛型

语法

作用

使用

List的遍历

 


集合的概念

是一个容器, 可以存储多个数据, 通常用来替代数组的使用

集合的特点

  1. 只能存储引用类型

  2. 都来自于java.util

三大集合: List,Set,Map都为接口

List存储特点

有序,有下标,元素可以重复

与数组特征完全一致

List的常用实现类

  1. ArrayList (常用)

    • JDK1.2 底层数组实现 查询快,增删慢 线程不安全,效率高

  2. LinkedList

    • JDK1.2 底层链表实现 查询慢,增删快 线程不安全,效率高

  3. Vector(不用)

    • JDK1.0 底层数组实现 都慢 线程安全,效率低

创建

  • 建议使用多态

List 集合名=new 实现类名();

常用方法

集合对象名.方法名(..)

  1. void add(下标, 元素): 将元素添加到集合指定下标位置

  2. boolean add(元素): 将元素添加到集合末尾

  3. Object[] toArray(): 将集合转换为数组

  4. boolean addAll(下标, 集合名): 将参数集合中的所有内容添加到当前集合指定下标位置

  5. boolean addAll(集合名): 将参数集合中的所有内容添加到当前集合末尾

  6. boolean contains(元素): 判断指定元素在集合中是否存在

  7. boolean containsAll(集合名): 判断参数集合中的所有元素在当前集合中是否存在

  8. 元素 get(下标): 获取指定下标位置的元素

  9. 下标 indexOf(元素): 获取指定元素首次出现的下标, 不存在返回-1

    • lastIndexOf: 最后一次出现的下标

  10. 被删除的元素 remove(下标): 删除指定下标位置的元素

    • 当集合元素为整数时, 传参时优先认定其为下标

  11. boolean remove(元素): 删除指定元素

    • 只会删除第一个匹配元素

  12. 旧元素值 set(下标, 新元素值): 将指定下标位置的元素替换为新元素值

  13. int size(): 获取集合元素个数

泛型

语法

List<泛型> 集合名=new 实现类名<>();

作用

约束集合中存储的数据类型

使用

  1. 必须为引用类型

  2. 当需要存储基本类型时, 需要将泛型声明为其包装类型

  3. 左侧<>不可省略, 右侧<>可以省略内容,但是不建议省略语法

  4. 可以将泛型声明为大类型, 则集合中可存储不同的小类型对象

List的遍历

  1. 下标遍历+get()

    for(int i=0; i < 集合名.size(); i++){
        //i: 下标
        //通过集合名.get(i)获取当前遍历元素
    }
  2. 迭代器遍历

    • 集合名.iterator(): 获取集合的迭代器对象

    • Iterator迭代器的使用:

      • boolean hashNext(): 判断是否存在下一元素

      • 元素 next(): 使指针后移,获取下一元素

    • 使用:

      • 无法在迭代过程中增删元素

        • 指针走向固定, 增删元素会导致获取结果有误

      • 必须保证一次循环至多存在一次next()的调用

            //1.获取集合的迭代器对象
            Iterator<集合的泛型> it = 集合名.iterator();
            //2.操作迭代器, 获取集合元素
            while (it.hasNext()) {//循环条件: 存有下一元素
                //指针后移一位: it.next()
            }
  3. 外遍历forEach

    • JDK5.0

    • 本质仍为迭代器遍历, 所以遍历过程中不可增删元素

    for(数据类型 元素名: 集合名){
        //元素名随便起, 代表了当前正在被操作的元素
    }
  4. 自遍历forEach

    • 集合名.forEach(Consumer实现类对象)

    • JDK8.0

    • 不能在操作过程中增删集合元素

    //匿名内部类     
    集合名.forEach(new Consumer<集合泛型>() {
                @Override
                public void accept(集合泛型 参数名) {
                   //参数名: 代表当前被操作的集合元素
                }
            });
            //lambda简化
            list.forEach(
                    参数名->{对参数的操作}
            );
package com.by.test;
​
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.function.Consumer;
​
public class Test2 {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(11);
        list.add(20);
        list.add(33);
        list.add(40);
        list.add(55);
​
        //下标遍历
        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i)+"  ");
        }
        System.out.println();
        //迭代器Iterator遍历
        //1.获取集合的迭代器对象
        Iterator<Integer> it = list.iterator();
        //2.操作迭代器, 获取集合元素
        while (it.hasNext()) {//循环条件: 存有下一元素
            //指针后移一位: 输出偶数
            //接收本次内容
            Integer i = it.next();
            if (i % 2 == 0) {
                System.out.print(i + "  ");
            }
            //新增元素
           // list.add(1, 60); 报错
        }
        System.out.println();
        //外遍历
        for (Integer i : list) {
            System.out.print(i+"  ");
        }
        System.out.println();
        //自遍历
        list.forEach(new Consumer<Integer>() {
            @Override
            public void accept(Integer i) {
                System.out.print(i+"  ");
            }
        });
        //lambda简化
        list.forEach(
                i->System.out.print(i+"  ")
        );
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值