目录

一.List体系

二.ArrayList类

三.LinkedList类


一.List体系

1.概述:List 就是有序、可重复、能按位置编号存取的集合,像动态变长的数组。

二.ArrayList类

1.概述:ArrayList 底层是动态 Object 数组,有序可重复,查询快、中间增删慢,线程不安全。

2.ArrayList中特有方法

  • 增加元素方法

add(E e):向集合末尾处,添加指定的元素

public class Test {
    public static void main(String[] args) {
        // 创建一个空的 ArrayList
        ArrayList<String> list = new ArrayList<>();
        // 往集合末尾添加元素
        list.add("苹果");
        list.add("香蕉");
        list.add("橙子");
        System.out.println(list);
        // 输出:[苹果, 香蕉, 橙子]
    }
}

add(int index, Object e):在指定位置插入元素,指定位置后面的元素全部向后移动

 public class Test {
    public static void main(String[] args) {
        // 创建一个空的 ArrayList
        ArrayList<String> list = new ArrayList<>();
        // 往集合末尾添加元素
        list.add("苹果");
        list.add("香蕉");
        list.add("橙子");
        list.add(1,"葡萄");
        System.out.println(list);
        // 输出:[苹果, 葡萄, 香蕉, 橙子]
    }
}

  • 删除元素方法

remove(Object e):按元素内容删除

public class Test {
    public static void main(String[] args) {
        // 创建一个空的 ArrayList
        ArrayList<String> list = new ArrayList<>();
        // 往集合末尾添加元素
        list.add("苹果");
        list.add("香蕉");
        list.add("橙子");
        boolean isRemove = list.remove("苹果");
        System.out.println(isRemove);
        // 输出:remove执行结果,true删除成功,false删除失败
        System.out.println(list);
        // 输出:[香蕉, 橙子]
    }
}

remove(int index):按索引位置删除

public class Test {
    public static void main(String[] args) {
        // 创建一个空的 ArrayList
        ArrayList<String> list = new ArrayList<>();
        // 往集合末尾添加元素
        list.add("苹果");
        list.add("香蕉");
        list.add("橙子");
        String removeStr = list.remove(0);
        System.out.println(removeStr);
        // 输出:对应删除的元素"苹果"
        System.out.println(list);
        // 输出:[香蕉, 橙子]
    }
}

  • 替换元素方法

set(int index, Object e):将指定索引处的元素,替换成指定的元素,返回值为替换前的元素

public class Test {
    public static void main(String[] args) {
        // 创建一个空的 ArrayList
        ArrayList<String> list = new ArrayList<>();
        // 往集合末尾添加元素
        list.add("苹果");
        list.add("香蕉");
        list.add("橙子");
        String oldStr = list.set(0,"西瓜");
        System.out.println(oldStr);
        // 输出:对应被替换的元素"苹果"
        System.out.println(list);
        // 输出:[香蕉, 橙子]
    }
}

  • 查询元素方法

get(int index):获取指定索引处的元素,并返回该元素

public class Test {
    public static void main(String[] args) {
        // 创建一个空的 ArrayList
        ArrayList<String> list = new ArrayList<>();
        // 往集合末尾添加元素
        list.add("苹果");
        list.add("香蕉");
        list.add("橙子");
        String getStr = list.get(0);
        System.out.println(getStr);
        // 输出:对应被替换的元素"苹果"
        System.out.println(list);
        // 输出:[苹果, 香蕉, 橙子]
    }
}

3.ArrayList遍历

public class Test {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("苹果");
        list.add("香蕉");
        list.add("橙子");

        // 普通 for 循环
        for (int i = 0; i < list.size(); i++) {
            // get(i) 获取第 i 个元素
            System.out.println(list.get(i));
        }

        // 增强for:直接拿元素,不用写索引
        for (String fruit : list) {
            System.out.println(fruit);
        }

        // 获取迭代器
        for (Iterator<String> it = list.iterator();it.hasNext();) { // 有没有下一个
            String fruit = it.next(); // 拿元素
            System.out.println(fruit);
        }
    }
}

4.ArrayList底层原理

底层原理:ArrayList 底层就是一个[动态数组],本质:Object [] 数组 + 自动扩容

底层初始:内部有个 transient Object[] elementData→ 就是一个 Object 类型的数组,啥都能存,默认没放元素时,数组是空数组,一添加数据,才会真正分配空间

扩容机制:第一次 add 元素 → 数组容量变成 10,数组满了再添加 → 自动扩容 1.5 倍,比如:10 → 15 → 22 → 33…
扩容原理:新建一个更大的数组 → 把旧数组复制过去 → 替换引用

三.LinkedList类

1.概述:LinkedList 底层是双向链表,有序可重复,增删快、查询慢,也实现了 List 接口。

2.LinkedList特有方法

  • 增加元素方法

addFirst(Object e):向集合的开头位置添加元素

public class Test {
    public static void main(String[] args) {
        // 创建 LinkedList
        LinkedList<String> list = new LinkedList<>();
        list.add("苹果");
        list.add("香蕉");
        list.add("橙子");
        // addFirst(Object  e) 往头部加
        list.addFirst("火龙果");
        System.out.println(list);
        // [火龙果, 苹果, 香蕉, 橙子]
    }
}

addLast(Object  e):向集合的末尾添加元素

public class Test {
    public static void main(String[] args) {
        // 创建 LinkedList
        LinkedList<String> list = new LinkedList<>();
        list.add("苹果");
        list.add("香蕉");
        list.add("橙子");
        // addLast(Object e) 往尾部加
        list.addLast("西瓜");
        System.out.println(list);
        // [苹果, 香蕉, 橙子, 西瓜]
    }
}

  • 查询元素方法

getFirst():获取集合头部的元素

public class Test {
    public static void main(String[] args) {
        // 创建 LinkedList
        LinkedList<String> list = new LinkedList<>();
        list.add("苹果");
        list.add("香蕉");
        list.add("橙子");
        // getFirst() 获取头部
        String first = list.getFirst();
        System.out.println(first);
        // 苹果
    }
}

getLast():获取集合尾部的元素

public class Test {
    public static void main(String[] args) {
        // 创建 LinkedList
        LinkedList<String> list = new LinkedList<>();
        list.add("苹果");
        list.add("香蕉");
        list.add("橙子");
        // getLast() 获取尾部
        String last= list.getLast();
        System.out.println(last);
        // 橙子
    }
}

get(int index):取出指定位置的元素

public class Test {
    public static void main(String[] args) {
        // 创建 LinkedList
        LinkedList<String> list = new LinkedList<>();
        list.add("苹果");
        list.add("香蕉");
        list.add("橙子");
        // get(int index) 获取指定位置
        String orderStr = list.get(1);
        System.out.println(orderStr);
        // 香蕉
    }
}

  • 删除元素方法

removeFirst():移除头部元素,并且返回当前被删除的元素

public class Test {
    public static void main(String[] args) {
        // 创建 LinkedList
        LinkedList<String> list = new LinkedList<>();
        list.add("苹果");
        list.add("香蕉");
        list.add("橙子");
        // removeFirst() 删除头部并返回
        String Str = list.removeFirst();
        // 输出被删除的头部元素苹果
        System.out.println(Str);
        // 输出原有集合[香蕉, 橙子]
        System.out.println(list);
    }
}

removeLast():移除尾部的元素,并且返回当前被删除的元素

public class Test {
    public static void main(String[] args) {
        // 创建 LinkedList
        LinkedList<String> list = new LinkedList<>();
        list.add("苹果");
        list.add("香蕉");
        list.add("橙子");
        // removeFirst() 删除头部并返回
        String Str = list.removeLast();
        // 输出被删除的尾部元素橙子
        System.out.println(Str);
        // 输出原有集合[苹果, 香蕉]
        System.out.println(list);
    }
}

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐