List集合接口的介绍和使用

一.关于List集合类的继承关系图

List接口继承了Collection接口,而List接口下有三个重要的实现类:ArrayList,LinkedList,Vector

二.List接口的基本介绍

1.List接口是Collection接口的子接口
2.存入List集合中的元素是有序的(即添加顺序和取出顺序是一样的)

public static void main(String[] args) {

        List list = new ArrayList<>();
        list.add("jack");
        list.add(10);
        list.add(true);
        list.add("mary");
        System.out.println("list="+list);//输出结果为:list=[jack, 10, true, mary] 添加顺序和取出顺序是一样的

    }

3.List集合里的元素是可以重复存入口

public static void main(String[] args) {

        List list = new ArrayList<>();
        list.add("jack");
        list.add(10);
        list.add(true);
        list.add("mary");
        //可以放入重复的数据jack
        boolean b = list.add("jack");
        System.out.println(b);//输出结果为:true
        System.out.println("list="+list);//输出结果为:list=[jack, 10, true, mary, jack] 

    }

4.List集合中的每一个元素都有自己对应的顺序索引,即支持索引(索引是从0开始)

public static void main(String[] args) {

        List list = new ArrayList<>();
        list.add("jack");
        list.add(10);
        list.add(true);
        list.add("mary");
        list.add("jack");
        //获取索引为2的元素,即第三个元素
        Object o = list.get(3);
        System.out.println(o);//输出结果为:mary

    }

5.List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号取容器中的元素
6.JDK API中LIst接口的常用的实现类有:ArrayList,LinkedList,Vector

三.List接口的常用方法

由于List接口无法实例化,要想使用List接口的方法我们就用List的实现类ArrayList来演示它的常用方法

1.add(int index,Object o)方法:

在index位置插入o元素。(index表示下标,从0开始。o表示要插入的元素)

public static void main(String[] args) {

        List list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        //add(int index,Object o)方法的使用
        list.add(1,"小明");
        System.out.println("list="+list);//输出结果为:list=[张三, 小明, 李四, 王五]

    }
2.addAll(int index,Collection c)方法:

在index位置插入多个元素。(index表示下标,从0开始。c表示实现了Collection接口的子类多可以放入。如果元素插入成功返回true,否则返回false)

public static void main(String[] args) {

        List list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        //addAll(int index,Collection c)方法的使用
        List newList = new ArrayList<>();
        newList.add("小明");
        newList.add("小红");
        boolean b = list.addAll(1, newList);
        System.out.println(b);//输出结果:true
        System.out.println("list="+list);//输出结果:list=[张三, 小明, 小红, 李四, 王五]

    }
3.get(int index)方法:

获取下标为index位置上的元素(index表示下标,从0开始。)

public static void main(String[] args) {

        List list = new ArrayList<>();
        list.add("jack");
        list.add(10);
        list.add(true);
        list.add("mary");
        list.add("jack");
        //获取索引为2的元素,即第三个元素
        Object o = list.get(1);
        System.out.println(o);//输出结果为:10

    }
4.indexOf(Object o)方法:

查找o对象在集合中首次出现的位置,即下标(如果没有就返回-1)

public static void main(String[] args) {

        List list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
         list.add("李四");
        //indexOf(Object o)方法的使用
        int index = list.indexOf("李四");
        System.out.println(index);//输出结果为:1

    }
5.lastIndexOf(Object o)方法:

查找o对象在集合中末次出现的位置,即下标(如果没有就返回-1)

public static void main(String[] args) {

        List list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        list.add("李四");
        //lastIndexOf(Object o)方法的使用
        int index = list.lastIndexOf("李四");
        System.out.println(index);//输出结果为:3
        
    }
6.remove(int index)方法:

移除index位置上的元素,并且返回此元素

public static void main(String[] args) {

        List list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        list.add("李四");
        //remove(int index)方法的使用
        Object o = list.remove(1);
        System.out.println(o);//输出结果为:李四
        System.out.println("list="+list);//输出结果为:list=[张三, 王五, 李四]

    }
7.set(int index,Object o)方法:

修改index位置上的元素为o,即为替换,并返回被修改的元素

public static void main(String[] args) {

        List list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        list.add("李四");
        //set(int index,Object o)方法的使用
        Object o = list.set(1, "小明");
        System.out.println(o);//输出结果为:李四
        System.out.println("list="+list);//输出结果为:list=[张三, 小明, 王五, 李四]

    }
8.subList(int fromIndex,int toIndex)方法:

返回从fromindex到toIndex位置上的集合(包括fromIndex位置但是不包括toIndex位置,即[formIndex,toIndex)。)

public static void main(String[] args) {

        List list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        list.add("李四");
        //subList(int fromIndex,int toIndex)方法的使用
        List newList = list.subList(1, 3);
        System.out.println("newList="+newList);//输出结果为:newList=[李四, 王五]

    }

四.List的三种遍历方式

1.使用Iterator(迭代器)
public static void main(String[] args) {

        List list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        list.add("李四");
        //使用Iterator(迭代器)遍历
        Iterator iterator = list.iterator();
        while (iterator.hasNext()) {
            Object o =  iterator.next();
            System.out.println(o);//遍历完最终输出结果为:张三 李四 王五 李四
        }

    }
2.使用曾强for循环
List list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        list.add("李四");
        //使用曾强for循环遍历
        for (Object o : list) {
            System.out.println(o);//遍历完最终输出结果为:张三 李四 王五 李四
        }

    }
3.使用普通for循环,即利用下标遍历(下标从0开始)注
public static void main(String[] args) {

        List list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        list.add("李四");
        //使用普通for循环遍历
        for (int i=0;i<list.size();i++){
            System.out.println(list.get(i));//遍历完最终输出结果为:张三 李四 王五 李四
        }

    }

注:部分内容来源于网络 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/367719.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

面试经典150题——文本左右对齐(困难)

​"It always seems impossible until it’s done." - Nelson Mandela 1. 题目描述&#xff1a; 这个题目标为困难题目&#xff0c;但是如果我们静下心来把题目读懂了&#xff0c;其实无非就是不同情况下不同考虑而已&#xff0c;也没什么思维上的复杂&#xff0c;还…

银行数据仓库体系实践(8)--主数据模型设计

主数据区域中保留了数据仓库的所有基础数据及历史数据&#xff0c;是数据仓库中最重要的数据区域之一&#xff0c;那主数据区域中主要分为近源模型区和整合&#xff08;主题&#xff09;模型区。上一节讲到了模型的设计流程如下图所示。那近源模型层的设计在第2.3和3这两个步骤…

微信积分系统怎么做_开启用户忠诚度之门

积分系统&#xff1a;开启用户忠诚度之门 在数字化时代&#xff0c;积分系统已经成为了企业与消费者之间互动的桥梁。它不仅是一种奖励机制&#xff0c;更是提升用户忠诚度、促进消费的重要手段。本文将深入探讨如何将积分系统作为主题&#xff0c;撰写一篇高质量的营销软文&a…

记录element-plus树型表格的bug

问题描述 如果数据的子节点命名时children,就没有任何问题&#xff0c;如果后端数据结构子节点是其他名字&#xff0c;比如thisChildList就有bug const tableData [{id: 1,date: 2016-05-02,name: wangxiaohu,address: No. 189, Grove St, Los Angeles,selectedAble: true,th…

Socket通信之获取服务器端文件列表点击下载

客户端读取服务器端的文件目录,自主选择进行下载。(AS实现) 1.Manifest添加权限 与之前博文相同,不再赘述。详见: Socket通信-CSDN博客文章浏览阅读272次,点赞4次,收藏10次。套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。socket通…

乘方计算 T1062

#include<bits/stdc.h> using namespace std; int a,n, power1; int main(){cin>>a>>n;for(int i1;i<n;i){power*a;}cout<<power<<endl;return 0; }

【Docker】网络配置network详解

一&#xff0c;network的概述 解决痛点&#xff08;能干什么&#xff1f;&#xff09;&#xff1a; &#xff08;1&#xff09;容器间的互联和通信以及端口映射 &#xff08;2&#xff09;容器IP变动时候&#xff0c;可以通过服务名直接网络通信而不受到影响 二&#xff0c;n…

小白水平理解面试经典题目_数组类Leetcode 412. Fizz Buzz【数学解法】

412 FizzBuzz 小白渣翻译&#xff1a; 给定一个整数 n &#xff0c;返回一个字符串数组 answer &#xff08;从 1 开始索引&#xff09;&#xff0c;其中&#xff1a; answer[i] “FizzBuzz” 如果 i 能被 3 和 5 整除。answer[i] “Fizz” 如果 i 能被 3 整除。answer[i]…

大数据信用报告查询费用一般要多少钱?

一些不少朋友在申贷的时候被拒贷之后&#xff0c;得到的原因就是因为大数据不良被拒&#xff0c;这时候很多人都反过来查询自己的大数据信用报告&#xff0c;而查询的价格也是不少朋友都比较关注的&#xff0c;那大数据信用报告查询费用一般要多少钱呢?下面本文就为你介绍一下…

069:vue中EventBus的使用方法(图文示例)

第069个 查看专栏目录: VUE ------ element UI 本文章目录 示例背景示例效果图示例源代码父组件&#xff1a;子组件A&#xff1a;子组件B&#xff1a;eventbus/index.js&#xff1a; EventBus的基本使用方法&#xff1a; 示例背景 在Vue中&#xff0c;使用EventBus可以实现组件…

flask基于Python的期货交易模拟系统的django-afl61-vue

期货交易模拟系统是一个便于用户在线查看期货投资、取消投资、风险控制、账户资金、持仓资金等&#xff0c;管理员进行管理的平台。因此本文主要论述了系统开发的过程和实现的功能&#xff0c;结合Web技术来实现的期货交易模拟系统。本系统以软件工程理论为开发基础&#xff0c…

【差分数组 区间的综合用例】

根据前面两篇文章 区间合并 差分数组 对差分数组和合并区间的介绍&#xff0c;以下是两道相关的例题&#xff0c;其中综合题融合了区间合并和差分数组&#xff0c;非常经典&#xff0c;也有点难度&#xff0c;值得仔细琢磨 最合适的价格 &#xff08;差分数组&#xff09; 给…

Java线程是怎么实现run方法的执行的呢?【 多线程在JVM中的实现原理剖析】

Java线程是怎么实现run方法的执行的呢&#xff1f;【 多线程在JVM中的实现原理剖析】 查看naive state0 方法JVM_StartThread 方法创建操作系统线程操作系统线程执行 本文转载-极客时间 我们知道Java线程是通过行start()方法来启动的&#xff0c;线程启动后会执行run方法内的代…

【Linux网络编程三】Udp套接字编程(简易版服务器)

【Linux网络编程三】Udp套接字编程(简易版服务器&#xff09; 一.创建套接字二.绑定网络信息1.构建通信类型2.填充网络信息①网络字节序的port②string类型的ip地址 3.最终绑定 三.读收消息1.服务器端接收消息recvfrom2.服务器端发送消息sendto3.客户端端发送消息sendto4.客户端…

Python使用分治算法作归并排序

对于分治算法的一个较为常规的应用中&#xff0c;归并排序是一个使用分治算法的排序方式。给定一个随机排序的数组&#xff0c;我们要将其元素按照升序或者降序的方式进行排序&#xff0c;可以设想到这样的一种算法&#xff0c;如果一个数组的上半部分和下半部分已经排好序&…

Vue打包Webpack源码及物理路径泄漏问题解决

修复前&#xff1a; 找到vue.config.js文件&#xff0c;在其中增加配置 module.exports {productionSourceMap: false,// webpack 配置configureWebpack: {devtool: false,}}其中打包的物理路径泄露我这边试了好多次&#xff0c;发现只有打包的时候NODE_ENVproduction 才能保…

JSP和JSTL板块:第三节 JSP四大域对象 来自【汤米尼克的JAVAEE全套教程专栏】

JSP和JSTL板块&#xff1a;第三节 JSP四大域对象 一、page范围二、request范围三、session范围四、application范围 在服务器和客户端之间、各个网页之间、哪怕同一个网页之内&#xff0c;总是需要传递各种参数值&#xff0c;这时JSP的内置对象就是传递这些参数的载具。内置对象…

Iceberg从入门到精通系列之二十三:Spark查询

Iceberg从入门到精通系列之二十三&#xff1a;Spark查询 一、使用 SQL 查询二、使用 DataFrame 进行查询三、Time travel四.Incremental read五、检查表六、History七、元数据日志条目八、Snapshots九、Files十、Manifests十一、Partitions十二、所有元数据表十三、参考十四、使…

泰克示波器(TBS2000系列)触发功能使用讲解——边沿触发

# Trigger区域 触发区域用于对触发功能进行配置。示波器的触发功能用于采集&#xff08;Acquire&#xff09;那些在瞬间出现的信号&#xff0c;便于我们分析观察&#xff0c;此时可以当做逻辑分析仪使用。触发区域按钮包括&#xff1a;menu、Level\Force Trig三个。 目录 1.1 …

【机器学习 深度学习】卷积神经网络简述

&#x1f680;个人主页&#xff1a;为梦而生~ 关注我一起学习吧&#xff01; &#x1f4a1;专栏&#xff1a;机器学习 欢迎订阅&#xff01;相对完整的机器学习基础教学&#xff01; ⭐特别提醒&#xff1a;针对机器学习&#xff0c;特别开始专栏&#xff1a;机器学习python实战…