|NO.Z.00047|——————————|BigDataEnd|——|Java&集合类库.V04|——|Java.v04|List集合.一.v01|

一、List集合(重中之重)
### --- List集合(重中之重)

——>        [List集合]——[List集合的概念和ArrayList类的源码解析]
——>        [LinkedList类的概念和源码解析]——[Stack类和Vector类的概念]
### --- 基本概念

——>        java.util.List集合是Collection集合的子集合,
——>        该集合中允许有重复的元素并且有先后放入次序。
——>        该集合的主要实现类有:ArrayList类、LinkedList类、Stack类、Vector类。
——>        其中ArrayList类的底层是采用动态数组进行数据管理的,支持下标访问,
——>        增删元素不方便。
——>        其中LinkedList类的底层是采用双向链表进行数据管理的,访问不方便,增删元素方便。
——>        可以认为ArrayList和LinkedList的方法在逻辑上完全一样,只是在性能上有一定的差别,
——>        ArrayList更适合于机访问而LinkedList更适合于插入和删除;
——>        在性能要求不是特别苛刻的情形下可以忽略这个差别。
——>        其中Stack类的底层是采用动态数组进行数据管理的,
——>        该类主要用于描述一种具有后进先出特征的数据结构,叫做栈(last in first out LIFO)。
——>        其中Vector类的底层是采用动态数组进行数据管理的,
——>        该类与ArrayList类相比属于线程安全的类,效率比较低,以后开发中基本不用。
二、常用的方法
方法声明 功能介绍
void add(int index, E element) 向集合中指定位置添加元素
boolean addAll(int index, Collection<? extends E> c) 向集合中添加所有元素
E get(int index)  从集合中获取指定位置元素
int indexOf(Object o) 查找参数指定的对象
int lastIndexOf(Object o) 反向查找参数指定的对象
E set(int index, E element) 修改指定位置的元素
E remove(int index) 删除指定位置的元素
List subList(int fromIndex, int toIndex) 用于获取子List
三、ArrayList类的底层原理
四、LinkedList类的底层原理
五、编程代码
package com.yanqi.task14;

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

public class ListTest {

    public static void main(String[] args) {

        // 1.声明一个List接口类型的引用指向ArrayList类型的对象,形成了多态
        // 由源码可知:当new对象时并没有申请数组的内存空间
        List lt1 = new ArrayList();
        // 2.向集合中添加元素并打印
        // 由源码可知:当调用add方法添加元素时会给数组申请长度为10的一维数组,扩容原理是:原始长度的1.5倍
        lt1.add("one");
        System.out.println("lt1 = " + lt1); // [one]

        System.out.println("----------------------------------------------------");
        // 2.声明一个List接口类型的引用指向LinkedList类型的对象,形成了多态
        List lt2 = new LinkedList();
        lt2.add("one");
        System.out.println("lt2 = " + lt2); // [one]
    }
}
六、编译打印
D:\JAVA\jdk-11.0.2\bin\java.exe "-javaagent:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\lib\idea_rt.jar=49566:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\bin" -Dfile.encoding=UTF-8 -classpath E:\NO.Z.10000——javaproject\NO.H.00001.javase\javase\out\production\javase com.yanqi.task14.ListTest
lt1 = [one]
----------------------------------------------------
lt2 = [one]

Process finished with exit code 0

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

posted on   yanqi_vip  阅读(23)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示