【JAVA】List接口

简介: Array List 的大部分方法是从父类 Collection 和List 继承的,其中add()方法和get()方法分别用于实现元素的存入和取出。下面通过一个案例介绍 Array List 的元素存取。

651d1c39125e4fb48509dc327017e607.jpg


🏆今日学习目标:List接口

😃创作者:颜颜yan_

✨个人主页:颜颜yan_的个人主页

⏰本期期数:第四期

🎉专栏系列:JAVA


一、ArrayList


ArrayList是 List 接口的一个实现类,它是程序中最常见的一种集合。 ArrayList内部封装了一个长度可变的数组对象,当存入的元素超过数组长度时,Array List 会在内存中分配一个更大的数组来存储这些元素,因此可以将 ArrayList 看作一个长度可变的数组。ArrayList 的元素插人过程如图。


7baa54ad2d47473abd925020b1b8ed5c.png


Array List 的大部分方法是从父类 Collection 和List 继承的,其中add()方法和get()方法分别用于实现元素的存入和取出。下面通过一个案例介绍 Array List 的元素存取。


import java.util.*;
public class Main {
    public static void main(String[] args) {
        ArrayList list = new ArrayList<>(); //创建集合
        list.add("张三");                     //向集合添加元素
        list.add("李四");
        list.add("王五");
        list.add("马六");
        //获取集合中元素的个数
        System.out.println("集合的长度:"+list.size());
        //取出并打印指定位置的元素
        System.out.println("第三个元素是:"+list.get(2));
        //删除索引为3的元素
        list.remove(3);
        System.out.println("删除索引为3的元素:"+list);
        //将索引为1 的元素替换为李四2
        list.set(1,"李四2");
        System.out.println("替换索引为1的元素为李四2:"+list);
    }
}


在上述代码中,创建了 ArrayList 对象list,代码通过 list对象调用add( Object o)方法添加了4个元素,通过 list对象调用 size()方法获取集合中元素的个数并输出,使用 list 对象调用 get(方法获取索引为 1 的元素并输出,删除 list 对象素引为 了的元素并输出;删除后的list 对象,最后代码替换 list 对象中索引为 1的元素为"李四 2"并输出。


运行结果如下图:


b0328b23c448480697195d059f51f1b0.png


从图可以看出,素引为 1 的元素是集合中的第2个元素,这就说明集合和数组一样,索引的取值范围是从0开始的,最后一个素引是集合大小减 1。在访问元素时一定要注意索引不可超出此范围,否则程序会抛出素引越界异常 。


由于 ArrayList 的底层是使用一个数组存储元素,在增加或删除指定位置的元素时,会创建新的数组,效率比较低,因此 Arraylist 集合不适合做大量的增删操作,而适合元素的查找。


二、LinkedList


上面节中讲解的 ArrayList 在查询元素时速度很快,但在增删元素时效率较低。为了克服这种局限性,可以使用 List 接口的另一个实现类-LinkedList。LinkedList内部维护了一个双向循环链表,链表中的每一个元素都使用引用的方式记录它的前一个元素和后一个素,从而可以将所有的元素彼此连按起来。当插人一个新元素时,只需要修改元素之可的引用关系即可;删除一个节点也是如此。正因为 Linkedlist 具有这样的存储结构,所以其增删效率非常高。LinkedList 添加元素和删除元素的过程如图所示:


78c288c60d114fa895adb5f5e2327e44.jpg


上图中的实线箭头表示建立新的引用关系,虚线箭头表示删除引用关系。左图为添加元素,元素 1和元素2在集合中为前后关系,在它们之间新增一个元素时,只需要让元素 1记录它后面的元素为新元素,让元素 2记录它前面的元素为新元素。

右图为删除元素,要想删除元素 1与元素2之间的元素 3,只需要让元素 1 与元素 2变成前后引用关系


针对元素的添加、删除和获取操作,LinkedList 定义了一些特有的方法,如下表


方法声明 功能描述
void add(int index,E element) 在当前集合的索引index处插入元素element
void addFirst(Object o) 将指定元素o插入前集合的开头
void addList(Object o) 将指定元素o添加前集合的开将结尾
Object getFirst() 返回当前集合的第一个元素
Object getLast() 返回当前集合的最后一个元素
Object removeFirst() 移除并返回当前集合的第一个元素
Object removeLast() 移除并返回当前集合的最后一个元素
boolean offer(Object o) 将指定元素o添加到当前集合的结尾
boolean offerFirst(Object o) 将指定元素o添加到当前集合的开头
boolean offerLast(Object o) 将指定元素o添加到当前集合的结尾
Object peekFirst() 获取当前集合的第一个元素
Object peekLast() 获取当前集合的最后一个元素
Object pollFirst() 移除并返回当前集合的第一个元素
Object pollLast() 移除并返回当前集合的最后一个元素
void push(Object o) 将指定元素o添加到当前集合的开头


表列出的方法主要用手对集合中的元素进行添加、删除和获取操作。下面通过一个案例来接受这些方法的使用


import java.util.*;
public class Main {
    public static void main(String[] args) {
        LinkedList link = new LinkedList(); //创建集合
        link.add("张三");                     //向集合添加元素
        link.add("李四");
        link.add("王五");
        link.add("马六");
        System.out.println(link.toString()); //获取集合中元素的个数
        link.add(3,"Student"); //向集合中索引为3出插入元素Student
        link.addFirst("First"); //向集合的第一个位置插入First
        System.out.println(link);
        System.out.println(link.getFirst()); //取出集合中的第一个元素
        link.remove(3); //移除集合中索引为3的元素
        link.removeFirst();  //移除集合中的第一个元素
        System.out.println(link);
    }
}


在上述代码中,创建了一个 LinkedList 集合,并且在集合中存人4个元素,通过调用add()和 addFirst()方法分别在集合中索引为3的位置和第一个位置(索引为 0)插人元素,然后通过调用remove()和 removeFirst()方法将集合中索引为 3 和0的元素移除。这样就完成了元素的增删操作。


运行结果如图所示:


d6053150a88d42369f016fb5d8b1389a.png


总结


以上就是今天的学习内容啦~

如果有兴趣的话可以订阅专栏,持续更新呢~

咱们下期再见~


d654ccad24f7444193347efdd48461ed.gif

相关文章
|
2月前
|
JSON Java Apache
非常实用的Http应用框架,杜绝Java Http 接口对接繁琐编程
UniHttp 是一个声明式的 HTTP 接口对接框架,帮助开发者快速对接第三方 HTTP 接口。通过 @HttpApi 注解定义接口,使用 @GetHttpInterface 和 @PostHttpInterface 等注解配置请求方法和参数。支持自定义代理逻辑、全局请求参数、错误处理和连接池配置,提高代码的内聚性和可读性。
162 3
|
2月前
|
Java 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
158 57
|
2月前
|
Java
在Java中实现接口的具体代码示例
可以根据具体的需求,创建更多的类来实现这个接口,以满足不同形状的计算需求。希望这个示例对你理解在 Java 中如何实现接口有所帮助。
91 38
|
13天前
|
数据采集 JSON Java
利用Java获取京东SKU接口指南
本文介绍如何使用Java通过京东API获取商品SKU信息。首先,需注册京东开放平台账号并创建应用以获取AppKey和AppSecret。接着,查阅API文档了解调用方法。明确商品ID后,构建请求参数并通过HTTP客户端发送请求。最后,解析返回的JSON数据提取SKU信息。注意遵守API调用频率限制及数据保护法规。此方法适用于电商平台及其他数据获取场景。
|
19天前
|
安全 Java API
java如何请求接口然后终止某个线程
通过本文的介绍,您应该能够理解如何在Java中请求接口并根据返回结果终止某个线程。合理使用标志位或 `interrupt`方法可以确保线程的安全终止,而处理好网络请求中的各种异常情况,可以提高程序的稳定性和可靠性。
46 6
|
2月前
|
Java API
Java中内置的函数式接口
Java中内置的函数式接口
27 2
|
2月前
|
Java
在Java中如何实现接口?
实现接口是 Java 编程中的一个重要环节,它有助于提高代码的规范性、可扩展性和复用性。通过正确地实现接口,可以使代码更加灵活、易于维护和扩展。
102 3
|
2月前
|
Java
在Java中,接口之间可以继承吗?
接口继承是一种重要的机制,它允许一个接口从另一个或多个接口继承方法和常量。
118 1
|
2月前
|
Java Android开发
Eclipse 创建 Java 接口
Eclipse 创建 Java 接口
35 1
|
2月前
|
Java
java线程接口
Thread的构造方法创建对象的时候传入了Runnable接口的对象 ,Runnable接口对象重写run方法相当于指定线程任务,创建线程的时候绑定了该线程对象要干的任务。 Runnable的对象称之为:线程任务对象 不是线程对象 必须要交给Thread线程对象。 通过Thread的构造方法, 就可以把任务对象Runnable,绑定到Thread对象中, 将来执行start方法,就会自动执行Runable实现类对象中的run里面的内容。
42 1