重学java 49 List接口

但逢良辰,顺颂时宜

------ 24.5.28

一、List接口

1.概述:

是collection接口的子接口

2.常见的实现类:

ArrayList LinkedList Vector

二、List集合下的实现类

1.ArrayList集合的使用及源码分析

1.概述

ArrayList是List接口的实现类

2.特点

a.元素有序 ---> 按照什么顺序存的,就按照什么顺序取

b.元素可重复

c.有索引 ---> 可以利用索引去操作元素

d.线程不安全

3.数据结构:数组

4.常用方法

boolean add(E e)****---> 将元素添加到集合中 ---> 尾部(add方法一定能添加成功的,所以我们不用boolean接收返回值)

void add(int index,E element) ---> 在指定索引位置上添加元素

boolean remove(Object o) ---> 删除指定的元素,删除成功为true,失败为false

E remove(int index) ---> 删除指定索引位置上的元素,返回的是被删除的元素

E set(int index,E element)****---> 将指定索引位置上的元素,修改成后面的element元素

E get(int index)--- > 根据索引获取元素

int size()****---> 获取集合元素个数

5.示例

java 复制代码
package S83SetFrame;

import java.util.ArrayList;

public class Demo226List {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        // boolean add(E e)->将元素添加到集合中->尾部(add方法一定能添加成功的,所以我们不用boolean接收返回值)
        list.add("一切都会好的");
        list.add("我一直相信");
        list.add("万事胜意");
        System.out.println(list);   // [一切都会好的, 我一直相信, 万事胜意]

        // void add(int index,E element)->在指定索引位置上添加元素
        list.add(2,"苦难是花开的伏笔");
        System.out.println(list);   // [一切都会好的, 我一直相信, 苦难是花开的伏笔, 万事胜意]

        // boolean remove(0bject o)->删除指定的元素,删除成功为true,失败为false
        list.remove("苦难是花开的伏笔");
        System.out.println(list);   // [一切都会好的, 我一直相信, 万事胜意]

        // E remove(int index)->删除指定索引位置上的元素,返回的是被删除的那个元素
        String res = list.remove(2);
        System.out.println(res);    // 万事胜意
        System.out.println(list);   // [一切都会好的, 我一直相信]

        // E set(int index,E element)->将指定索引位置上的元素,修改成后面的element元素
        String res1 = "会好 迟早";
        list.set(0,res1);
        System.out.println(list);   // [会好 迟早, 我一直相信]

        // E get(int index)->根据索引获取元素
        String res2 = list.get(1);
        System.out.println(res2);   // 我一直相信

        // int size()->获取集合元素个数
        int size = list.size();
        System.out.println(list.size());    // 2
        System.out.println(size);   // 2
    }
}

List集合的遍历:

java 复制代码
package S83SetFrame;

import java.util.ArrayList;
import java.util.Iterator;

public class Demo227ListForeach {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        // boolean add(E e)->将元素添加到集合中->尾部(add方法一定能添加成功的,所以我们不用boolean接收返回值)
        list.add("一切都会好的");
        list.add("我一直相信");
        list.add("万事胜意");

        // 遍历方式1:
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
        
        // 遍历方式2: 快捷键: 集合名.fori
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }
}

列表元素是整数型的删除

复制代码
需求:删除2
remove(object o)->直接删除指定元素
remove(int index)->删除指定索引位置上的元素
如果remove中直接传递整数,默认调用按照指定索引删除元素的remove但是此时1ist中没有2索引,所以越界
解决:我们可以将2包装成包装类,变成包装类之后,其父类就是object
java 复制代码
package S83SetFrame;

import java.util.ArrayList;

public class Demo228ListDeleteInt {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(2);
//         需求:删除2
//         remove(object o)->直接删除指定元素
//         remove(int index)->删除指定索引位置上的元素
//         如果remove中直接传递整数,默认调用按照指定索引删除元素的remove但是此时1ist中没有2索引,所以越界
//         解决:我们可以将2包装成包装类,变成包装类之后,其父类就是object了
        list.remove(new Integer(2));
        System.out.println(list);
    }
}

6.ArrayList构造方法:

a.ArrayList() 构造一个初始容量为十的空列表

b.ArrayList(int initialcapacity) 构造具有指定初始容量的空列表

7.ArrayList源码总结:

a.不是一new底层就会创建初始容量为10的空列表,而是第一次add的时候才会创建初始化容量为10的空列表

b.ArrayList底层是数组,那么为啥还说集合长度可变呢?

ArrayList底层会自动扩容 ---> Arrays.copyof

c.扩容多少倍?

1.5倍

2.LinkedList集合的使用及源码分析

1.概述

LinkedList是List接口的实现类

2.特点

a.元素有序

b.元素可重复

c.有索引 ---> 这里说的有索引仅仅指有操作索引的方法,不代表本质上具有索引

d.线程不安全

3.数据结构

双向链表

4.方法

**public void addFirst(E e):**将指定元素插入此列表的开头。

**public void addLast(E e):**将指定元素添加到此列表的结尾。

**public E getFirst():**返回此列表的第一个元素。

**public E getLast():**返回此列表的最后一个元素。

**public E removeFirst():**移除并返回此列表的第一个元素。

**public E removeLast():**移除并返回此列表的最后一个元素。

**public E pop():**从此列表所表示的堆栈处弹出一个元素。

**public void push(E e):**将元素推入此列表所表示的堆栈。

**public boolean isEmpty():**如果列表没有元素,则返回true。

5.示例

java 复制代码
package S83SetFrame;

import java.util.LinkedList;

public class Demo229LinkedList {
    public static void main(String[] args) {
        LinkedList<String> linkedList = new LinkedList<>();
        linkedList.add("A");
        linkedList.add("B");
        linkedList.add("C");
        linkedList.add("D");
        linkedList.add("E");
        System.out.println(linkedList);

//        public void addFirst(E e):将指定元素插入此列表的开头。
        linkedList.addFirst("F");
        linkedList.addFirst("G");
        System.out.println(linkedList);
        System.out.println("------------------------------------------------------------------------------------------------------------");

//        public void addLast(E e):将指定元素添加到此列表的结尾。
        linkedList.addLast("H");
        linkedList.addLast("I");
        linkedList.addLast("J");
        System.out.println(linkedList);
        System.out.println("------------------------------------------------------------------------------------------------------------");

//        public E getFirst():返此列表的第一个元素。
        System.out.println(linkedList);
        System.out.println(linkedList.getFirst());
        System.out.println("------------------------------------------------------------------------------------------------------------");

//        public E getLast():返回此列表的最后一个元素。
        System.out.println(linkedList);
        System.out.println(linkedList.getLast());
        System.out.println("------------------------------------------------------------------------------------------------------------");

//        public E removeFirst():移除并返回此列表的第一个元素。
        String ele = linkedList.removeFirst();
        System.out.println(ele);
        System.out.println(linkedList);
        System.out.println("------------------------------------------------------------------------------------------------------------");

//        public E removeLast():移除并返回此列表的最后一个元素。
        String ele2 = linkedList.removeLast();
        System.out.println(ele2);
        System.out.println(linkedList);
        System.out.println("------------------------------------------------------------------------------------------------------------");

//        public E pop():从此列表所表示的堆栈处弹出一个元素。
        System.out.println(linkedList.pop());
        System.out.println(linkedList);
        System.out.println("------------------------------------------------------------------------------------------------------------");

//        public void push(E e):将元素推入此列表所表示的堆栈。
        linkedList.push("K");
        System.out.println(linkedList);
        System.out.println("------------------------------------------------------------------------------------------------------------");

//        public boolean isEmpty():如果列表没有元素,则返回true.
        System.out.println(linkedList.isEmpty());
    }
}

linkedList的遍历

java 复制代码
package S83SetFrame;

import java.util.Iterator;
import java.util.LinkedList;

public class Demo230LinkedListForeach {
    public static void main(String[] args) {
        LinkedList<String> linkedList = new LinkedList<>();
        linkedList.add("A");
        linkedList.add("B");
        linkedList.add("C");
        linkedList.add("D");
        linkedList.add("E");
        System.out.println(linkedList);

        // 遍历
        Iterator<String> iterator = linkedList.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }

        // 根据索引遍历
        for (int i = 0; i < linkedList.size(); i++) {
            System.out.println(linkedList.get(i));
        }
    }
}
相关推荐
wrx繁星点点2 分钟前
事务的四大特性(ACID)
java·开发语言·数据库
不写八个9 分钟前
Python办公自动化教程(005):Word添加段落
开发语言·python·word
IT学长编程10 分钟前
计算机毕业设计 Java酷听音乐系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·spring boot·毕业设计·课程设计·毕业论文·音乐系统·计算机毕业设计选题
HEX9CF14 分钟前
【CTF Web】Pikachu xss之href输出 Writeup(GET请求+反射型XSS+javascript:伪协议绕过)
开发语言·前端·javascript·安全·网络安全·ecmascript·xss
IT学长编程27 分钟前
计算机毕业设计 基于协同过滤算法的个性化音乐推荐系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·spring boot·毕业设计·毕业论文·协同过滤算法·计算机毕业设计选题·个性化音乐推荐系统
小小娥子32 分钟前
Redis的基础认识与在ubuntu上的安装教程
java·数据库·redis·缓存
赵荏苒38 分钟前
Python小白之Pandas1
开发语言·python
几何心凉39 分钟前
已解决:org.springframework.web.HttpMediaTypeNotAcceptableException
java
丶Darling.40 分钟前
代码随想录 | Day26 | 二叉树:二叉搜索树中的插入操作&&删除二叉搜索树中的节点&&修剪二叉搜索树
开发语言·数据结构·c++·笔记·学习·算法
华农第一蒟蒻42 分钟前
Java中JWT(JSON Web Token)的运用
java·前端·spring boot·json·token