首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Java中List集合

Java中List集合

作者头像
訾博ZiBo
发布2025-01-06 14:03:58
发布2025-01-06 14:03:58
3870
举报

一、概述

1、三大特点:

有序的(存取的顺序是一致的);有索引;允许存储重复的元素;

二、使用

初始代码:

代码语言:javascript
复制
        //初始代码
        List<String> list = new ArrayList<>();
        list.add("大哥");
        list.add("二哥");
        list.add("三哥");
        System.out.println(list);//[大哥, 二哥, 三哥]
        System.out.println("=====================");

1、为指定位置添加一个元素

代码语言:javascript
复制
        //下面演示list特有的带索引的方法
        //1、为指定位置添加一个元素
        list.add(1,"我插个队");
        System.out.println(list);//[大哥, 我插个队, 二哥, 三哥]
        System.out.println("=====================");

2、删除指定位置的元素

代码语言:javascript
复制
        //2、删除指定位置的元素
        String string = list.remove(1);
        System.out.println(list);//[大哥, 二哥, 三哥]
        System.out.println("被移除的元素是"+string);//我插个队
        System.out.println("=====================");

3、替换指定位置的元素

代码语言:javascript
复制
         //3、替换指定位置的元素
        String string1 = list.set(2,"小弟");
        System.out.println(list);//[大哥, 二哥, 小弟]
        System.out.println("被替换的元素"+string1);
        System.out.println("=====================");

4、获取指定位置的元素

代码语言:javascript
复制
        //4、获取指定位置的元素
        String string2 = list.get(1);
        System.out.println(string2);//二哥

5、使用迭代器遍历(为了增强对迭代器的熟悉度)

代码语言:javascript
复制
        //5、使用迭代器遍历,以及多个循环遍历的方法
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
        for(Iterator<String> iterator1 = list.iterator();iterator1.hasNext();){
            System.out.println(iterator1.next());
        }
        //增强for循环-底层是迭代器
        for(String s : list){
            System.out.println(s);
        }
        //for循环遍历,使用get方法
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

三、ArrayList集合

1、简介

List接口的大小可变的数组的实例(底层是数组);

此实现不是同步的(意思是多线程,效率高);

里面包含了很多通过索引操作元素的方法;

简化:基于数组实现,增删快,查询慢,线程不安全;

2、特点

增删慢,查询快;

3、注意

很多程序员非常随意的使用ArrayList完成任何需求,并不严谨,不提倡!

4、为什么增删快,查询慢

ArrayList底层是基于数组实现的,数组是一串连续的存储空间,所以ArrayList集合内部的元素必须是连续存储的,当要在中间删除或者插入一个元素,其后面的元素都需要进行一移动,因此ArrayList集合不适合删除和插入,而适合查找和遍历操作;

5、ArrayList集合长度自动增长原理

ArrayList集合不需要在定义时指定数组的长度,当所要存储的元素超过ArrayList长度的时候,系统会自动创建一个更大长度的数组,将之前的元素复制进去,然后继续进行添加操作;

四、LinkedList

1、简介

List 接口的链接列表实现(底层是链表结构);

此实现不是同步的(意思是多线程,效率高);

里面包含了多个操作首尾元素的方法;

简化:基于双向链表实现,增删快,查询慢,线程不安全!

2、特点

查询慢,增删快;

3、注意

使用LinkedList集合特有的方法时不能使用多态;

3.5、补充说明

LinkedList采用双向链表结构存储元素,对LinkedList元素进行插入和删除时,只需要在对应节点上进行,对其他元素没有影响,因此插入和删除操作很快,但是在随机访问时需要对内部元素进行从头直到遍历到该元素为止,速度较慢;

4、使用

初始代码:
代码语言:javascript
复制
         //创建LinkedList,添加默认数据
        LinkedList<String> linkedList = new LinkedList<>();
        linkedList.add("大哥");
        linkedList.add("二哥");
        linkedList.add("三哥");
        System.out.println(linkedList);//[大哥, 二哥, 三哥]
        System.out.println("=====================");
1、将指定的元素插入到集合的开头:
代码语言:javascript
复制
        //1、将指定的元素插入到集合的开头
        linkedList.addFirst("大姐");//[大姐, 大哥, 二哥, 三哥]
        System.out.println(linkedList);
        System.out.println("=====================");
2、将指定的元素插入到集合的末尾:
代码语言:javascript
复制
        //2、将指定的元素插入到集合的末尾
        linkedList.addLast("小妹");
        System.out.println(linkedList);//[大姐, 大哥, 二哥, 三哥, 小妹]
        System.out.println("=====================");
3、将一个元素推入此列表所表示的堆栈,此方法等效于addFirst:
代码语言:javascript
复制
        //3、将一个元素推入此列表所表示的堆栈,此方法等效于addFirst
        linkedList.push("大姐之前");
        System.out.println(linkedList);//[大姐之前, 大姐, 大哥, 二哥, 三哥, 小妹]
        System.out.println("=====================");
4、获取集合的第一个元素:
代码语言:javascript
复制
        //4、获取集合的第一个元素
        System.out.println("获取集合的第一个元素为"+linkedList.getFirst());
        System.out.println("=====================");
5、获取集合的最后一个元素:
代码语言:javascript
复制
        //5、获取集合的最后一个元素
        System.out.println("获取集合的最后一个元素为"+linkedList.getLast());
        System.out.println("=====================");
6、移除并返回集合的第一个元素:
代码语言:javascript
复制
        //6、移除并返回集合的第一个元素
        System.out.println("所移除的集合的第一个元素为"+linkedList.removeFirst());
        System.out.println(linkedList);//[大姐, 大哥, 二哥, 三哥, 小妹]
        System.out.println("=====================");
7、移除并返回集合的最后一个元素:
代码语言:javascript
复制
        //7、移除并返回集合的最后一个元素
        System.out.println("所移除的集合的最后一个元素为"+linkedList.removeLast());
        System.out.println(linkedList);//[大姐,大哥, 二哥, 三哥]
        System.out.println("=====================");
8、从列表所表示的堆栈出弹出一个元素,等效于removeLast:
代码语言:javascript
复制
        //8、从列表所表示的堆栈出弹出一个元素,等效于removeLast
        System.out.println(linkedList.pop());
        System.out.println(linkedList);//[大哥, 二哥, 三哥]
        System.out.println("=====================");
9、使用迭代器遍历(为了增强对迭代器的熟悉度):
代码语言:javascript
复制
        //9、使用迭代器遍历(为了增强对迭代器的熟悉度)
        Iterator<String> iterator = linkedList.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
        for(Iterator<String> iterator1 = linkedList.iterator();iterator1.hasNext();){
            System.out.println(iterator1.next());
        }
        //增强for循环-底层是迭代器
        for(String string : linkedList){
            System.out.println(string);
        }

五、Vector(了解即可)

1、简介

所有单列集合的祖宗;

Vector 类可以实现可增长的对象数组(底层是数组);

与新 collection 实现不同,Vector 是同步的(单线程,速度慢);

JDK1.0版本的,非常古老;

简化:基于数组实现,增删慢,查询快,线程安全;

2、补充

与ArrayList不同的是,Vector支持线程同步,即同一时刻只允许一个线程对Vector进行新增、删除、修改等操作,以保证多线程环境下数据的一致性,但需要对Vector进行频繁的加锁解锁操作,效率很低;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、概述
    • 1、三大特点:
  • 二、使用
    • 初始代码:
    • 1、为指定位置添加一个元素
    • 2、删除指定位置的元素
    • 3、替换指定位置的元素
    • 4、获取指定位置的元素
    • 5、使用迭代器遍历(为了增强对迭代器的熟悉度)
  • 三、ArrayList集合
    • 1、简介
    • 2、特点
    • 3、注意
    • 4、为什么增删快,查询慢
    • 5、ArrayList集合长度自动增长原理
  • 四、LinkedList
    • 1、简介
    • 2、特点
    • 3、注意
    • 3.5、补充说明
    • 4、使用
      • 初始代码:
      • 1、将指定的元素插入到集合的开头:
      • 2、将指定的元素插入到集合的末尾:
      • 3、将一个元素推入此列表所表示的堆栈,此方法等效于addFirst:
      • 4、获取集合的第一个元素:
      • 5、获取集合的最后一个元素:
      • 6、移除并返回集合的第一个元素:
      • 7、移除并返回集合的最后一个元素:
      • 8、从列表所表示的堆栈出弹出一个元素,等效于removeLast:
      • 9、使用迭代器遍历(为了增强对迭代器的熟悉度):
  • 五、Vector(了解即可)
    • 1、简介
    • 2、补充
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档