List接口

本文深入解析了List接口及其两种主要实现类ArrayList和LinkedList的特点与应用场景。对比了基于动态数组的ArrayList和基于链表的LinkedList在随机访问、新增和删除操作上的性能差异。

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

List接口

Collection接口是最基本的集合接口,可以存储一组不唯一、无序的对象

List接口继承自Collection接口,是有序集合

List接口的实现类

  1. ArrayList类
  2. LinkedList类

ArrayList类

ArrayList实现了长度可变的数组,在内存中分配连续的空间,遍历元素和随机访问元素的效率比较高。

```
1. ArrayList类是List接口的一个具体实现类
2. ArrayList对象实现了可变大小的数组
3. 随机访问和遍历元素时,它提供更好的性能

#### ArrayList常用方法
![image](https://note.youdao.com/yws/api/personal/file/48CDE4AB84E7420793427F9ECDE67EA5?method=download&shareKey=df36ec227df47ded9e806badac79c234)
Collection接口常用通用方法还有:clear()、isEmpty()、iterator()、toArray()


import java.util.ArrayList;

public class Test {

public static void main(String[] args){
    ArrayList list=new ArrayList();//①
    list.add("张三丰");
    list.add("郭靖");
    list.add("杨过");
    //判断集合中是否包含"李莫愁",对应步骤3
    System.out.println(list.contains("李莫愁"));//输出false
    //把索引为0的数据移除,对应步骤4
    list.remove(0); //②
    System.out.println("---------------------");
    list.set(1,"黄蓉"); //③
    for (int i = 0; i < list.size(); i++){//④
        String name=(String)list.get(i);
        System.out.println(name);
    }
    System.out.println("---------------------");
    System.out.println(list.indexOf("小龙女")); //⑤
    list.clear(); //清空list中的数据
    System.out.println("---------------------");
System.out.println(list.isEmpty()); //⑦
}

}

①的代码调用ArrayList的无参构造方法,创建集合对象。
②的代码将list集合中索引为0的元素删除,list集合的下标从0开始。
③的代码将list集合中索引为1的元素替换成“黄蓉”。
④的代码是使用for循环遍历集合,输出集合的元素。list.get(i)取出集合中索引为i的元素,并强制转换为String类型。
⑤的代码输出元素“小龙女”所在的索引位置,因为集合中没有该元素,所以返回的结果为-1.

## LinkedList类
LinkedList类是List接口的链接列表实现类。他支持实现所有List接口可选的列表操作,并且允许元素值是任何类型,包括null。
LinkedList类采用链表存储方式存储数据,优点在于插入、删除元素时效率较高。
#### linkedList常用方法
LinkedList类是双向列表,列表中的每个节点都包含了对前一个和后一个元素的引用.
LinkedList的构造函数如下
1. public LinkedList():  ——生成空的链表
2. public LinkedList(Collection col):  复制构造函数


#### 方法
![image](https://note.youdao.com/yws/api/personal/file/0B491649E9054F0588F394ABB3B3E0A7?method=download&shareKey=78d3b3c52f9327d672beeedc5b0c97aa)

package com.Collectiom;
import java.util.LinkedList;
public class LinkedListDemo {
public static void main(String[] args) {
LinkedList link = new LinkedList();
link.addFirst(“a”);
link.addFirst(“b”);
link.addFirst(“c”);
System.out.println(link);//cba
System.out.println(link.getLast());//获取元素,单不删除元素
System.out.println(link.size());
//System.out.println(link.removeFirst());//获取元素及删除
System.out.println(link.size());
System.out.println(link);

//System.out.println(link.poll());
}

}

“`

ArrayList和LinkedList的大致区别如下:

  1. ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
  2. 对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
  3. 对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

Iterator接口

Iterator接口概述

Iterator接口也是Java集合框架的成员,但它与Collection系列、Map系列的集合不一样:Collection系列集合、Map系列集合主要用于盛装其他对象,而Iterator则主要用于遍历(即迭代访问)Collection集合中的元素,Iterator对象也被称为迭代器。

Iterator接口定义的4个方法
  1. boolean hasNext():如果被迭代的集合,元素还有没被遍历完,则返回true。
  2. Object next():返回集合里下一个元素。
  3. void remove():删除集合里上一次next方法返回的元素。
  4. void forEachRemaining(Consumeraction),这是Java8为Iterator新增的默认方法,该方法可使用Lambda表达式来遍历集合元素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值