Collection子接口1:List接口

1. List接口特点

  • 鉴于Java中数组用来存储数据的局限性,我们通常使用java.util.List替代数组

  • List集合类中元素有序、且可重复,集合中的每个元素都有其对应的顺序索引。

    • 举例:List集合存储数据,就像银行门口客服,给每一个来办理业务的客户分配序号:第一个来的是“张三”,客服给他分配的是0;第二个来的是“李四”,客服给他分配的1;以此类推,最后一个序号应该是“总人数-1”。
  • JDK API中List接口的实现类常用的有:ArrayListLinkedListVector

2. 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

举例:

package com.atguigu.list;  
​  
import java.util.ArrayList;  
import java.util.List;  
​  
public class TestListMethod {  
    public static void main(String[] args) {  
        // 创建List集合对象  
        List<String> list = new ArrayList<String>();  
​  
        // 往 尾部添加 指定元素  
        list.add("图图");  
        list.add("小美");  
        list.add("不高兴");  
​  
        System.out.println(list);  
        // add(int index,String s) 往指定位置添加  
        list.add(1,"没头脑");  
​  
        System.out.println(list);  
        // String remove(int index) 删除指定位置元素  返回被删除元素  
        // 删除索引位置为2的元素  
        System.out.println("删除索引位置为2的元素");  
        System.out.println(list.remove(2));  
​  
        System.out.println(list);  
​  
        // String set(int index,String s)  
        // 在指定位置 进行 元素替代(改)  
        // 修改指定位置元素  
        list.set(0, "三毛");  
        System.out.println(list);  
​  
        // String get(int index)  获取指定位置元素  
        // 跟size() 方法一起用  来 遍历的  
        for(int i = 0;i<list.size();i++){  
            System.out.println(list.get(i));  
        }  
        //还可以使用增强for  
        for (String string : list) {  
            System.out.println(string);  
        }  
    }  
}

注意:在JavaSE中List名称的类型有两个,一个是java.util.List集合接口,一个是java.awt.List图形界面的组件,别导错包了。

3. List接口主要实现类:ArrayList

  • ArrayList 是 List 接口的主要实现类

  • 本质上,ArrayList是对象引用的一个”变长”数组

  • Arrays.asList(…) 方法返回的 List 集合,既不是 ArrayList 实例,也不是 Vector 实例。 Arrays.asList(…) 返回值是一个固定长度的 List 集合

    image-20220408210743342

4. List的实现类之二:LinkedList

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

image-20220408225615829

  • 特有方法:

    • void addFirst(Object obj)

    • void addLast(Object obj)

    • Object getFirst()

    • Object getLast()

    • Object removeFirst()

    • Object removeLast()

5. 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()

Java基础

Iterator(迭代器)接口

2025-8-10 13:52:48

Java基础

Collection子接口2:Set接口

2025-8-10 15:33:59

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索