• Java集合大总结——List的简单使用


    List简单介绍

    • 鉴于Java中数组用来存储数据的局限性,我们通常使用java.util.List替代数组
    • List集合类中元素有序、且可重复,集合中的每个元素都有其对应的顺序索引。
    • JDK API中List接口的实现类常用的有:ArrayListLinkedListVector

    List接口方法

    List除了从Collection集合继承的方法外,List 集合里添加了一些根据索引来操作集合元素的方法。

    • 插入元素
      • void add(int index, Object ele):在index位置插入ele元素
      • boolean addAll(int index, Collection eles):从index位置开始将eles中的所有元素添加进来
    • 获取元素
      • Object get(int index):获取指定index位置的元素
      • List subList(int fromIndex, int toIndex):返回从fromIndex到toIndex位置的子集合
    • 获取元素索引
      • int indexOf(Object obj):返回obj在集合中首次出现的位置
      • int lastIndexOf(Object obj):返回obj在当前集合中末次出现的位置
    • 删除和替换元素
      • Object remove(int index):移除指定index位置的元素,并返回此元素
      • Object set(int index, Object ele):设置指定index位置的元素为ele

    List接口主要实现类:ArrayList

    • ArrayList 是 List 接口的主要实现类
    • 本质上,ArrayList是对象引用的一个”变长”数组
    • Arrays.asList(…) 方法返回的 List 集合,既不是 ArrayList 实例,也不是 Vector 实例。 Arrays.asList(…) 返回值是一个固定长度的 List 集合

    ArrayList底层是Object数组
    特定:查找和添加效率高;删除和插入的效率低。

    List的实现类之二:LinkedList

    对于频繁的插入或删除元素的操作,建议使用LinkedList类,效率较高。这是由底层采用链表(双向链表)结构存储数据决定的。
    特有方法:

    • void addFirst(Object obj)
    • void addLast(Object obj)
    • Object getFirst()
    • Object getLast()
    • Object removeFirst()
    • Object removeLast()

    List的实现类之三:Vector

    • Vector 是一个古老的集合,JDK1.0就有了。大多数操作与ArrayList相同,区别之处在于Vector是线程安全的。
    • 在各种List中,最好把ArrayList作为默认选择。当插入、删除频繁时,使用LinkedList;Vector总是比ArrayList慢,所以尽量避免使用。
    • 特有方法:
      • void addElement(Object obj)
      • void insertElementAt(Object obj,int index)
      • void setElementAt(Object obj,int index)
      • void removeElement(Object obj)
      • void removeAllElements()

    面试题:以下代码输出结果为?

    @Test
    public void testListRemove() {
        List list = new ArrayList();
        list.add(1);
        list.add(2);
        list.add(3);
        updateList(list);
        System.out.println(list);
    }
    
    private static void updateList(List list) {
    	//这里的参数2, 默认指的是索引,因为如果是值的话,还得进行装箱
    	//装箱有消耗
        list.remove(2);  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    在这里插入图片描述

  • 相关阅读:
    rv1126-rv1109-环境搭建-全部编译的方法
    【Redis】保证redis的高并发高可用的几种策略
    MyBatis处理SQL中的特殊字符
    一台服务器最大能支持多少条TCP连接
    相等全等运算符
    zabbix二级目录反代部署
    双通道内存和单通道的区别是什么
    34.Python面向对象(七)【单例模式&Enum枚举类】
    在python里如何实现switch函数的功能
    Erasure-Code-擦除码-2-实现篇
  • 原文地址:https://blog.csdn.net/Elon15/article/details/134488351