1.1 List

1. 接口和方法阐述

(1)接口

47956c397c32023abaabf24a1bc7f50b

(2)方法

b15f7ab1e168fe169870d2ba55e018e4

举例

image

代码示例

package com.baidu.www;

import java.util.ArrayList;
import java.util.List;

/**
 * 单列集合:
 *      特点:
 *          有序(元素的存取顺序一致),可重复
 *      注意:
 *          List是接口,所以可以通过创建其子类ArrayList对象来完成该接口的实例化
 *          List list = bew ArrayList();
 *
 *      List接口中的成员方法:
 *          public boolean add(E e);   // 将数据添加到集合的末尾,这里的E是泛型的意思,目前可以理解为Object类型
 *          public E get(int index);   // 根据索引,获取对应的元素
 *          public int size();         // 获取集合的长度
 *
 *      使用集合的步骤:
 *          1. 创建集合对象
 *          2. 创建元素对象
 *          3. 将元素对象添加到集合对象中
 *          4. 遍历集合
 */

public class Test {
    public static void main(String[] args) {
        // 需求:往List集合中添加三个学生对象
//                *          1. 创建集合对象
        List list = new ArrayList();
//                *          2. 创建元素对象
        Student s1 = new Student("刷刷", 12);
        Student s2 = new Student("刷刷", 34);
        Student s3 = new Student("分发", 21);
        Student s4 = new Student("版本", 56);
//                *          3. 将元素对象添加到集合对象中
        list.add(s1);
        list.add(s2);
        list.add(s3);
        list.add(s4);

        // 直接打印集合
        System.out.println(list);

        // 获取索引为2的元素
        Object obj = list.get(2);
        System.out.println("索引为2的元素是:" + obj);

        // 获取集合中的元素个数
        System.out.println("集合的长度是:" + list.size());
//                *          4. 遍历集合
        System.out.println("===========================");
        for (int i = 0; i < list.size(); i++) {
            // i表示的是集合中每个元素的索引
            System.out.println("索引为"+i+"的元素是:"+list.get(i));
        }
    }
}

2. ArrayList 底层结构和源码分析

(1)底层结构

b801c8896b6a971d5f3c82cfda587975

代码示例

package com.baidu.www;

import java.util.ArrayList;

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

        /**
         *     public boolean add(E e) {
         *         ensureCapacityInternal(size + 1);  // Increments modCount!!
         *         elementData[size++] = e;
         *         return true;
         *     }
         *     
         *     线程不安全!
         */

        ArrayList arrayList = new ArrayList();
        arrayList.add(null);
        arrayList.add(null);
        System.out.println(arrayList);
    }
}

(2)源码分析

transient,表示瞬间,短暂的,表示该属性不会被序列化

318e4ecbfadebfa344a3f0aed32ba6d3

无参构造源码

image

有参构造源码

image

代码示例

package com.baidu.www;

import java.util.ArrayList;

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

//        ArrayList arrayList = new ArrayList();
//
//        for (int i = 0; i < 10; i++) {
//            arrayList.add(i);
//        }
//
//        for (int i = 0; i < 15; i++) {
//            arrayList.add(i);
//        }

        ArrayList arrayList1 = new ArrayList(8);

        for (int i = 0; i < 10; i++) {
            arrayList1.add(i);
        }

        for (int i = 0; i < 15; i++) {
            arrayList1.add(i);
        }
    }
}

3. Vector 底层结构和源码分析

(1)底层结构

56cef62c25a94f02f9461dad4a819690

(2)源码分析

ef019a9a9e3f7733ab80231134130649
image

示例代码

package com.baidu.www;

import java.util.Vector;

public class Vector_ {
    public static void main(String[] args) {
        // 无参构造
        Vector vec = new Vector();
        for (int i = 0; i < 10; i++) {
            vec.add(i);
        }
        for (int i = 0; i < 15; i++) {
            vec.add(i);
        }
    }
}

4. LinkedList 底层结构和源码分析

(1)底层结构

0793e6fbe948e74d3c3a4cf3e23e4c4c
b8d7567f26e079d3a1a9fd57d17ab847

(2)源码分析

Add 源码分析

image

Remove 源码分析

image

代码示例

package com.baidu.www;

import java.util.LinkedList;

public class LinkedList_ {
    public static void main(String[] args) {
        LinkedList linkedList = new LinkedList();
        linkedList.add(1);
        linkedList.add(1);
        linkedList.add(2);
        linkedList.add(2);

        // 默认删除第一个节
        linkedList.remove();
        linkedList.remove();

        linkedList.set(1, 99);

        linkedList.get(1);

        System.out.println(linkedList);
    }
}

ArrayList 和 LinkedList 的比较

c5b8fc3dea9fd10bea6c383a1cde7a68

posted @ 2025-08-20 21:08  无敌美少女战士  阅读(5)  评论(0)    收藏  举报