java集合之List接口实现类常用方法详解

这篇具有很好参考价值的文章主要介绍了java集合之List接口实现类常用方法详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、List集合概述

二、ArrayList类

三、ArrayList常用方法实例

四、LinkedList类

五、Linkedist常用方法实例


一、List集合概述

        java.util.List接口继承自Collection接口,是单列集合的一个分支,通常将实现了List接口的对象称为List集合,在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中可以通过元素的索引下标来访问集合中的指定元素,另外List集合还有一个特点就是元素有序,即元素的存入顺序和取出顺序一致
       List接口常用方法列表说明详见    java集合之Collection接口体系-CSDN博客

二、ArrayList类

        java.util.ArrayList是一个实现了List接口的单列集合实现类,底层是一个大小可变的数组的实现 
         java.util.ArrayList集合数据存储的结构本质是一个可变数组对象,其特点包括:

        1.查找快:日常开发中使用最多的功能为查询数据、遍历数据,所以ArrayList是常用的集合。

        2.元素增删操作慢,一旦在某个位置增加、修改和删除数据,后面所有数据都必须往后移动

三、ArrayList常用方法实例

        1.向集合中添加单个元素

    /**
     * 在集合中添加单个元素
     * @return 返回集合列表
     */
    private List<String>  add(){
        List<String> list = new ArrayList<String>();
        list.add("01_贷款");
        list.add("02_贴现");
        list.add("03_承兑");
        list.add("04_保函");
        list.add("05_信用证");
        return list;
    }

        2.在集合的指定索引下标处添加单个元素

    /**
     * 在集合的指定下标处添加单个元素
     * @param list 集合对象
     * @param index 索引位置
     * @param obj 需要添加的元素对象
     * @return  变更后的集合对象
     */
    private List<String>  addForIndex(int index,List<String> list,String obj){
        list.add(index,obj);
        return list;
    }

        3.在集合的尾部添加子集合

    /**
     * 在集合的尾部添加子集合
     * @param list 集合对象
     * @return 返回合并后的集合对象
     */
    private List<String>  addSubListDemo(List<String> list){
        //定义一个子集合列表
        List<String> subList = new ArrayList<>();
        subList.add("06_委托贷款");
        subList.add("07_垫款");
        subList.add("08_贷款承诺");
        subList.add("09_担保");
        //将定义的子集合添加到已知集合的末尾
        list.addAll(subList);
        return list;
    }

         4.在集合的指定索引下标位置添加子集合

    /**
     * 在集合的指定索引位置添加子集合列表
     * @param list 集合对象
     * @param index 索引位置
     * @return 返回合并后的集合对象
     */
    private List<String>  addSubListForIndexDemo(List<String> list,int index){
        //定义一个子集合列表
        List<String> subList = new ArrayList<>();
        subList.add("06_委托贷款");
        subList.add("07_垫款");
        subList.add("08_贷款承诺");
        subList.add("09_担保");
        //将定义的子集合添加到已知集合的指定索引位置
        list.addAll(index,subList);
        return subList;
    }

        5.获取集合的元素数量

    /**
     * 获取集合元素的数量大小
     * @param list 集合对象
     * @return 返回集合中元素的数量
     */
    private Integer  getListSize(List<String> list){
        return list.size();
    }

        6.获取集合中指定元素对象的索引下标

    /**
     * 获取集合中指定元素对象的索引位置
     * @param list 集合对象
     * @param obj 元素对象
     * @return 返回元素的索引位置
     */
    private Integer  getIndexForElement(List<String> list,String obj){
        return list.indexOf(obj);
    }

        7.获取集合中指定元素最后一次的索引位置

    /**
     * 获取集合中指定元素最后一次的索引位置
     * @param list 集合对象
     * @param obj  元素对象
     * @return 返回最后一次出现的索引位置
     */
    private Integer  getIndexForLastElement(List<String> list,String obj){
        return list.lastIndexOf(obj);
    }

        8.将指定元素对象从集合中移除

    /**
     * 将指定元素对象从集合中移除
     * @param list 集合对象
     * @param obj  需要移除的元素
     * @return 是否移除成功
     */
    private boolean  removeListElement(List<String> list,String obj){
        return list.remove(obj);
    }

        9.将集合中指定索引下标位置的元素替换为新的元素对象

    /**
     * 将集合中指定索引位置的元素替换为新的元素对象
     * @param list 集合对象
     * @param index 指定的索引位置
     * @param obj 替换的新元素
     * @return   返回被替换的元素
     */
    private String  getSetElementForIndex(List<String> list,Integer index,String obj){
        return list.set(index,obj);
    }

        10.将集合中的元素根据指定索引范围截取一个新的集合返回

    /**
     * 从已知集合中根据指定索引范围截取一个新的集合返回
     * @param list 集合对象
     * @param startIndex 起始索引
     * @param endIndex 结束索引
     * @return 返回获取的子集合
     */
    private List<String>   getSetElementForIndex(List<String> list,Integer startIndex,Integer endIndex){
        return  list.subList(startIndex, endIndex);
    }

        11.集合中的元素转换为一个对象数组返回

    /**
     * 从已知集合中转换为一个对象数组返回
     * @param list 集合对象
     * @return 返回集合的数组对象
     */
    private Object[]  getToArrayForList(List<String> list){
        return  list.toArray();
    }

四、LinkedList类

      java.util.LinkedList是一个实现了List接口的单列集合实现类,底层是一个双向链表,同时实现了实现了ListDeque接口

     其特点包括

  1. 优点
  • 由于LinkedList底层实现是双向链表,所以在进行插入和删除操作方面具有高效性。
  • 由于LinkedList是动态的数据结构,因此在使用时不需要预先分配空间
  • 由于LinkedList实现了Deque接口 在集合的队首和队尾可以进行高效的插入和删除操作

      2. 缺点:

  • 由于LinkedList底层实现是双链表,所以从集合中访问某个元素时需要从头开始遍历整个链表,所以其查询操作慢
  •  由于LinkedList在进行元素对象存储时,需要将指向下一个元素和上一个元素的指针同时进行存储,其占用的内存空间相比ArrayList数组要更多。
  • 由于LinkedList是基于链表实现的,因此不支持随机访问,只能通过遍历整个链表来访问元素

五、Linkedist常用方法实例

1.将指定元素添加到集合的头部,方法包括2个

  • addFirst、offerFirst:将元素添加到集合的头部,并返回true
import java.util.LinkedList;

public class LinkedListDemo {

    public static void main(String[] args) {

        LinkedList linkedList =  new LinkedList<String>();
        LinkedListDemo listDemo = new LinkedListDemo();
        linkedList =  listDemo.addLinkedList();
        System.out.println("初始集合元素包括:"+linkedList);
        linkedList.addFirst("05_信用证");
        linkedList.offerFirst("06_电票");
        System.out.println("头部添加后的集合元素包括:"+linkedList);
 
    }

    private LinkedList addLinkedList(){
        LinkedList linkedList =  new LinkedList<String>();
        linkedList.add("01_贷款");
        linkedList.add("02_贴现");
        linkedList.add("03_承兑");
        linkedList.add("04_保函");
        return linkedList;

    }
}
执行结果:
   初始集合元素包括:[01_贷款, 02_贴现, 03_承兑, 04_保函]
   头部添加后的集合元素包括:[06_电票, 05_信用证, 01_贷款, 02_贴现, 03_承兑, 04_保函]

2.将指定的元素添加到集合的尾部,方法包括4个

  • add(E e)、offer(E e)、offerLast(E e):将元素添加到集合的尾部,并返回true
  • addLast(E e):将元素添加到集合的尾部,无返回值
import java.util.LinkedList; 
public class LinkedListDemo {
    public static void main(String[] args) {
        LinkedList linkedList =  new LinkedList<String>();
        LinkedListDemo listDemo = new LinkedListDemo();
        listDemo.addElement(linkedList,"01_贷款");
        listDemo.addElementForOffer(linkedList,"02_贴现");
        listDemo.addElementForOfferLast(linkedList,"03_承兑");
        listDemo.addElementForAddLast(linkedList,"04_保函");
        System.out.println("集合元素包括:"+linkedList);
    }

    private boolean addElement(LinkedList<Object> linkedList,Object obj){
        return linkedList.add(obj);
    }

    private boolean addElementForOffer(LinkedList<Object> linkedList,Object obj){
        return linkedList.add(obj);
    }

    private boolean addElementForOfferLast(LinkedList<Object> linkedList,Object obj){
        return linkedList.offerLast(obj);
    }

    private void addElementForAddLast(LinkedList<Object> linkedList,Object obj){
        linkedList.addLast(obj);
    }
}


执行结果:集合元素包括:[01_贷款, 02_贴现, 03_承兑, 04_保函]

3.获取集合的头元素方法包括4个

  • element()、getFirst():获取集合列表的头元素对象,若集合列表中无元素对象时抛出异常
  • peek()、peekFirst():获取集合列表的头元素对象,若集合列表中无元素对象时返回null
 //若不做空判断将会抛NoSuchElementException
    private String getElementForElement(LinkedList<String> linkedList){
        String element = linkedList==null||linkedList.size()==0?"":linkedList.element();
        return element;
    }
    //若不做空判断将会抛NoSuchElementException
    private String getElementForFirst(LinkedList<String> linkedList){
        String element = linkedList==null||linkedList.size()==0?"":linkedList.getFirst();
        return element;
    }
    //若不做空判断将返回null
    private String getElementForPeek(LinkedList<String> linkedList){
        String element =  linkedList.peek();
        return element;
    }
    //若不做空判断将返回null
    private String getElementForPeekFirst(LinkedList<String> linkedList){
        String element =  linkedList.peekFirst();
        return element;
    }

4.检索集合中的元素可分为两类即

  • 检索但不删除元素,包括三个方法,即get(int  index)、getFirst()、getLast(),使用该类方法获取集合中的元素,若集合不存在元素对象时,将抛出被请求的元素不存在异常,其中get(int Index)抛出数组越界异常,getFirst()和getLast()抛出空指针异常,所以在使用该类方法时需要注意空指针判断
public class LinkedListDemo {

    public static void main(String[] args) {

        LinkedListDemo listDemo = new LinkedListDemo();
        LinkedList linkedList =  listDemo.addLinkedList();
        System.out.println("集合元素列表:"+linkedList +
                           "\n根据索引获取指定元素:"+listDemo.getElementForGet(linkedList,2) +
                           "\n获取集合头元素:"+listDemo.getElementForFirst(linkedList)+
                           "\n获取集合尾元素:"+listDemo.getElementForLast(linkedList) ); 

    }

    private LinkedList addLinkedList(){
        LinkedList linkedList =  new LinkedList<String>();
        linkedList.add("01_贷款");
        linkedList.add("02_贴现");
        linkedList.add("03_承兑");
        linkedList.add("04_保函");
        return linkedList;

    }


    public String getElementForGet(LinkedList<String> linkedList,Integer index){
        return linkedList!=null&&linkedList.size()>0?linkedList.get(index):"";
    }


    public String getElementForFirst(LinkedList<String> linkedList){
        return linkedList!=null&&linkedList.size()>0?linkedList.getFirst():"";
    }


    public String getElementForLast(LinkedList<String> linkedList){
        return linkedList!=null&&linkedList.size()>0?linkedList.getLast():"";
    }
}
执行结果:
    集合元素列表:[01_贷款, 02_贴现, 03_承兑, 04_保函]
    根据索引获取指定元素:03_承兑
    获取集合头元素:01_贷款
    获取集合尾元素:04_保函
  • 检索的同时将检索的元素从集合中删除,包括六个方法 即poll()、pollFirst()、pollLast()、remove(int  index)、removeFirst()、removeLast()、​​​​​​​remove(Object obj)

       其中poll*() : 使用该类方法删除集合中的元素同时返回被删除的元素对象,若集合不存在元素对象时,则返回null,不会抛出异常

public class LinkedListDemo {

    public static void main(String[] args) {
        LinkedListDemo listDemo = new LinkedListDemo();
        LinkedList linkedList =  listDemo.addLinkedList();

        System.out.println("原始集合元素列表:"+linkedList +
                "\nPoll方法获取集合头元素:"+listDemo.getElementForPoll(linkedList) +
                "\nPollFirst获取集合头元素:"+listDemo.getElementForPollFirst(linkedList)+
                "\nPollLast获取集合尾元素:"+listDemo.getElementForPollLast(linkedList) +"" +
                "\n检索集合元素后集合中的元素列表:"+ linkedList);

    }

    private LinkedList addLinkedList(){
        LinkedList linkedList =  new LinkedList<String>();
        linkedList.add("01_贷款");
        linkedList.add("02_贴现");
        linkedList.add("03_承兑");
        linkedList.add("04_保函");
        linkedList.add("05_电票");
        return linkedList;

    }
 
    public String getElementForPoll(LinkedList<String> linkedList){
        return linkedList.poll();
    }
    public String getElementForPollFirst(LinkedList<String> linkedList){
        return linkedList.pollFirst();
    }
    public String getElementForPollLast(LinkedList<String> linkedList){
        return linkedList.pollLast();
    }
}
执行结果:
    原始集合元素列表:[01_贷款, 02_贴现, 03_承兑, 04_保函, 05_电票]
    Poll方法获取集合头元素:01_贷款
    PollFirst获取集合头元素:02_贴现
    PollLast获取集合尾元素:05_电票
    检索集合元素后集合中的元素列表:[03_承兑, 04_保函]

   其中remove*() : 使用该类方法删除集合中的元素同时返回被删除的元素对象(其中​​​​​​​remove(Object obj)方法返回是否删除成功的boolean值,成功返回true,否则返回false),若集合为空时则抛出空指针异常,若集合不存在元素对象时, 抛出被请求的元素不存在异常文章来源地址https://www.toymoban.com/news/detail-715828.html

public class LinkedListDemo {
    
    public static void main(String[] args) {


        LinkedListDemo listDemo = new LinkedListDemo();
        LinkedList linkedList =   listDemo.addLinkedList();

        System.out.println("原始集合元素列表:"+linkedList +
                        "\nremove方法删除集合头元素:"+listDemo.removeElementForRemove(linkedList,2) +
                        "\nremove方法删除集合指定元素:"+listDemo.removeElementForRemoveObj(linkedList,"05_电票") +
                        "\nremoveFirst方法删除集合头元素:"+listDemo.removeElementForRemoveFirst(linkedList) +
                        "\nremoveLast方法删除集合尾元素:"+listDemo.removeElementForRemoveLast(linkedList) +
                        "\n删除集合元素后集合中的元素列表:"+ linkedList); 

    }

    private LinkedList addLinkedList(){
        LinkedList linkedList =  new LinkedList<String>();
        linkedList.add("01_贷款");
        linkedList.add("02_贴现");
        linkedList.add("03_承兑");
        linkedList.add("04_保函");
        linkedList.add("05_电票");
        linkedList.add("06_垫款");
        return linkedList;

    }


    public String removeElementForRemove(LinkedList<String> linkedList,int index){
        return linkedList!=null&&linkedList.size()>0? linkedList.remove(index):"";
    }

    public boolean removeElementForRemoveObj(LinkedList<String> linkedList,Object obj){
        return linkedList!=null&&linkedList.size()>0?linkedList.remove(obj):false;
    }

    public String removeElementForRemoveFirst(LinkedList<String> linkedList){
        return linkedList!=null&&linkedList.size()>0?linkedList.removeFirst():"";
    }
    public String removeElementForRemoveLast(LinkedList<String> linkedList){
        return linkedList!=null&&linkedList.size()>0?linkedList.removeLast():"";
    }

}
执行结果:
    原始集合元素列表:[01_贷款, 02_贴现, 03_承兑, 04_保函, 05_电票, 06_垫款]
    remove方法删除集合头元素:03_承兑
    remove方法删除集合指定元素:true
    removeFirst方法删除集合头元素:01_贷款
    removeLast方法删除集合尾元素:06_垫款
    删除集合元素后集合中的元素列表:[02_贴现, 04_保函]

到了这里,关于java集合之List接口实现类常用方法详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java中创建List接口、ArrayList类和LinkedList类的常用方法(一)

    要了解List接口,就不得不说起Java的集合框架。 (该图来自菜鸟教程) Java 集合框架主要包括两种类型的容器,集合Collection和图Map。 Collection接口代表了 单列集合 ,它包含了一组Object元素,每个元素都有一个值。 (这里有个“泛型擦除”的概念,在此不提及有兴趣可自行了

    2024年01月19日
    浏览(37)
  • Java集合框架List接口

    目录 List接口概念 List接口常用的方法 示例 Java集合框架中的List接口是一种有序的集合,它可以存储重复的元素。它是Collection接口的子接口,提供了一系列可以对列表进行操作的方法,如添加、插入、删除、获取元素等。List接口还可以通过索引访问元素,类似于数组。 List接

    2023年04月17日
    浏览(30)
  • List 接口及其常用方法

    List 接口是 Collection 接口的子接口,其主要特点如下: List 中元素有序,是按照元素的插入顺序进行排序的。每个元素都有一个与之关联的整数型索引(索引从 0 开始),可以根据索引来访问和操作元素,可以使用普通 for 循环遍历。 List 中可以包含重复的元素。 下面的代码

    2024年02月08日
    浏览(32)
  • Java 中 List 集合排序方法

    注:Collections的sort方法其实是调用了List接口自己的sort方法。 首先你需要list.parallelStream().sorted 进行流处理,使用parallelStream可以充分调度多核CPU。 使用Comparator.comparing进行排序,reversed()进行倒序排列,thenComparing进行下一个排序。 Comparator.comparing()里面的内容,也是就是Obje

    2024年02月12日
    浏览(26)
  • 【Java】List集合遍历的五种方法

    🎊专栏【Java】 🌺每日一句:人生最重要的就是要清醒的认知 ⭐欢迎并且感谢大家指出我的问题 目录 1.通过for循环配合List接口中的size()和get(index i)的方法 2.使用Iterator迭代器及其方法遍历集合 🍔迭代器 🍔具体操作 3.增强for循环遍历 🍔是for循环的一种 🍔格式 🍔好处 🍔弊

    2024年02月03日
    浏览(44)
  • 【Java】集合List的toArray()方法及其重载

    在Java中,集合(List 接口的实现类)提供了一个名为 toArray 的方法,用于将集合中的元素转换成数组。该方法有两个主要的重载形式,分别用于不同的情况。 这个方法将集合中的元素复制到一个指定类型的数组中,并返回该数组。 如果指定的数组大小足够容纳集合中的所有

    2024年02月11日
    浏览(21)
  • 【Java 集合框架API接口】Collection,List,Set,Map,Queue,Deque

    博主: _LJaXi Or 東方幻想郷 专栏: Java | 从跨行业到跨平台 开发工具: IntelliJ IDEA 2021.1.3 Java集合API提供了一组功能强大的数据结构和算法, 具有以下作用( 简述 ) 存储和组织数据 提供高效的数据访问和操作 实现算法和数据处理 提供线程安全性 支持泛型编程 java.util.Collection

    2024年02月12日
    浏览(31)
  • 实现List接口的常用三类

    实现List接口的常用三类分别是ArrayList, vector, LinkedList,我们来看一下List接口的体系图: 这里我们可以查看类提供的相关方法,这里我们用代码实例来给大家演示一下常用的方法: 1.ArrayList 该方法在之前的博客中也写过相关实例但是这次我们要分析相关源码。 Vector,LinkedList方

    2024年02月04日
    浏览(28)
  • C++:stl:list的常用接口及其模拟实现

    本文主要介绍c++:stl中list常用接口的功能及使用方法,比较list与vector的区别,并对list的常用接口进行模拟实现。 目录 一、list的介绍和使用 1.list介绍 2.list使用 1.list的构造 2.list iterator的使用 3.list 容量相关 4.list元素访问 5.list修改 6.list的迭代器失效 二、list的模拟实现 1.l

    2024年02月07日
    浏览(35)
  • java基础-List常用方法

    Collections.reverse(List) Collections.sort(List) 首先让自定义类实现Comparable自定义类名称,举例: 在需要排序处: 单一删除的话,可以用List自带的remove,然后break。不然如果是删index0,有可能死循环没结果。 推荐使用Iterator删除,因为不需要跳出循环 如果连续几次添加同一个对象,

    2024年02月22日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包