常用类库Collection之List

本文深入介绍了Java集合框架的核心概念及其实现,包括Collection、List、Set等接口的使用方法,以及ArrayList、LinkedList等具体实现类的特点。同时,还探讨了Iterator接口如何用于遍历集合中的元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常用类库Collection

在这里插入图片描述

类集是java对数据结构的实现
类集最主要的操作接口:Collection、Map、Iterator

Collection接口
接口定义:

public interface Collection<E> extends Iterabel<E>

开发中不会直接使用Collection接口,而是使用其子接口:List、Set

List接口

public interface List<E> extends Collection<E>

List接口的实现类:ArrayList、Vector、LinkedList

ArrayList:使用的是数组结构,增删慢,查找快

//ArrayList默认长度为0,当开始存数据是默认长度变成10,也可以定义的时候给任意参数
//ArrayList<Integer> data= new ArrayList<>();
//<>中必须传入包装类,不能传int
ArrayList<Integer> data= new ArrayList<>(100);
//add()向集合中插入一个元素
data.add(10);
//打印data中下标为0的元素
System.out.println(data.get(0));
ArrayList<Integer> data1= new ArrayList<>();
data1.add(0);
//addAll​(int index, Collection<? extends E> c)从指定位置开始,将指定集合中的所有元素插入此列表
//将原来data下标0元素10换成1,原元素10变成下标1
data.addAll(0,data1);
System.out.println(data.get(0));
System.out.println(data.get(1));

在这里插入图片描述
Vector

LinkedList:使用的是双向链表结构,增删快,查找慢
常用add() remove() get()

public class Demo_linkedlist {
    public static void main(String[] args) {
        //LinkedList 类似栈操作,先进后出
        LinkedList<Integer> data = new LinkedList<>();
        //addFirst(), 在此列表的开头插入指定的元素
        data.addFirst(100);
        data.addFirst(200);
        //getFirst() 返回此列表中的第一个元素
        System.out.println(data.getFirst());
    }
}

在这里插入图片描述

//压栈
data.push(100);
data.push(200);
//出栈
Integer i = data.pop();
System.out.println(i);

结果同上:200

Iterator

public class Demo2 {
    public static void main(String[] args) {
        //Iterator 可以迭代所有Collection的集合(List和Set)
        //ListIterator 只能迭代List集合
        ArrayList<Integer> data = new ArrayList<>();
        data.add(1);
        data.add(2);
        data.add(3);
        data.add(4);
        data.add(5);
        //调用Collection的方法iterator,返回此集合中元素的迭代器。
        Iterator<Integer> iterator = data.iterator();
        //hasNext() 如果迭代具有更多元素,则返回 true 。
        while(iterator.hasNext()){
            //next(),返回迭代中的下一个元素。
            int i = iterator.next();
            System.out.println(i);
        }
    }
}
public class Demo2 {
    public static void main(String[] args) {
        //Iterator 可以迭代所有Collection的集合(List和Set)
        //ListIterator 只能迭代List集合
        ArrayList<Integer> data = new ArrayList<>();
        data.add(1);
        data.add(2);
        data.add(3);
        data.add(4);
        data.add(5);
        //调用Collection的方法iterator,返回此集合中元素的迭代器。
        Iterator<Integer> iterator = data.iterator();
        //hasNext() 如果迭代具有更多元素,则返回 true 。
       iterator.next();
        //必须指向下一位置才能删除,初始没有指向任何数据
        //remove(),从底层集合中移除此迭代器返回的最后一个元素
        iterator.remove();
        System.out.println(data.size());
    }
}

在这里插入图片描述

public class Demo2 {
    public static void main(String[] args) {
        ArrayList<Integer> data = new ArrayList<>();
        data.add(1);
        data.add(2);
        data.add(3);
        data.add(4);
        data.add(5);
        ListIterator<Integer> iterator = data.listIterator();
        //add(),该元素紧接在next()返回的元素之前插入,并且在previous()返回的元素之后插入
        //新元素在隐式游标之前插入:对next的后续调用不受影响,随后对previous调用将返回新元素。
        iterator.add(100);
        //指向1
        iterator.next();
        //指向2
        iterator.next();
        //set(),用指定的元素替换 next()或 previous()返回的最后一个元素
        //此示例为200替换原data下标为1的2
        iterator.set(200);
        System.out.println(data.size());
        //返回列表中的上一个元素,游标往上移一次
        //此时游标返回到集合最初,由于上面新插入一个元素,要移三次
        iterator.previous();
        iterator.previous();
        iterator.previous();
        while(iterator.hasNext()){
            int i = iterator.next();
            System.out.println(i);
        }
    }
}

在这里插入图片描述
增强for(foreach):用于迭代数组 或 集合
格式:
for(数据类型 变量名:集合或数组名){}

public class Demo_forEach {
    public static void main(String[] args) {
        //遍历数组
        int[] arr = {1,2,3,4,5};
        for (int i:arr) {
            System.out.println(i);
        }
        //遍历集合
        ArrayList<Integer> data = new ArrayList<Integer>();
        data.add(1);
        data.add(2);
        for (int a:data) {
            System.out.println(a);
        }
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值