0
点赞
收藏
分享

微信扫一扫

铂西学习日记---List

日月同辉9908 2022-02-10 阅读 72
list

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

public class ListDemo {
    /**
     * Collection接口:用于存储单个对象的集合
     *
     * List接口:
     * 1、有序的,可以重复
     * 2、允许多个null元素
     * 3、具体的实现有常用的: ArrayList, Vector, LinkedList
     *
     * 实际开发中我们如何选择List的具体实现?
     * 1.安全问题:线程,利用工具类 ArrayList 也能变成线程安全的
     * 2.是否经常插入删除?建议使用 LinkedList
     * 3.是否存储后遍历?ArrayList
     * Vector用的不多...
     * @param args
     */
    public static void main(String[] args) {

    }

    /**
     * ArrayList
     * 1.实现原理:采用动态对象数组,默认构造方法创建了一个空数组
     * 2.第一次添加元素扩充容量为10,后面再扩充为原来的1.5倍,扩充容量后采用拷贝的方法将原来的数据放到新数据中
     * 3.不适合进行删除或者插入操作
     * 4.为了防止数组容量扩充次数过多,建议创建Arraylist时,给定一个初始容量
     * 5.多线程中使用不安全,适合在单线程中使用
     * JDK1.2开发
     */
    public static void arrayList(){
        //父类的引用指向子类的对象
        //使用List来存储多个不同类型的元素(对象),那么在处理时会比较的麻烦,在实际开发中,不建议存储多种类型,我们应该在集合中存储相同的类型元素
        List<String> list = new ArrayList<>();

        //添加元素
        list.add("lsq");
        list.add("lbx");
        list.add("刘铂西");

        //移除元素
        list.add("abc");
        list.remove("abc");

        //为更严谨,建议先用变量存贮list的长度,如果直接使用list.size()放在循环中,每次循环调用都用,影响效率
        int size = list.size();//这样的好处是list.size()只调用一次
        for (int i=0;i<size;i++){//遍历元素
            System.out.println(list.get(i));
        }

        //是否包含元素
        System.out.println(list.contains("lsq"));

        //转换为数组
        String[] strings = list.toArray(new String[]{});
        for (String string : strings) {
            System.out.println(string);
        }
        /**
         * 更多方法查看API文档......
         */
    }

    /**
     * Vector
     * 1.实现原理:也是从采用动态数组,默认构造方法是创建一个大小为10的容量的对象数组
     * 2.扩充的算法:当增量为0时,扩充为原来大小的两倍,当增量大于0时,扩充为原来大小+增量
     * 3.不适合删除或插入操作
     * 4.为了防止数组容量扩充次数过多,建议创建Vector时,给定一个初始容量
     * 5.线程安全,适合在多线程时访问,在单线程下使用效率较低
     */
    public static void vector(){
        /**
         * 方法和ArrayList相似,不一一举例,更多方法查看API文档......
         */
        Vector<String> vector = new Vector<>();
        vector.add("lsq");
        System.out.println(vector.get(0));
    }

    /**
     * LinkedList
     * 1.实现原理:采用双向链表结构
     * 2.适合插入删除操作,性能高
     * 3.实现了队列(后续)
     *
     */
    public static void linkedList(){
        /**
         * 除了实现了List的接口外,还实现了在列表的开头结尾提供了get、remove、insert、元素提供了统一命名的方法
         * 方法和ArrayList相似,不一一举例,更多方法查看API文档......
         */
        LinkedList<String> list = new LinkedList<>();
        list.add("lsq");
        list.add("lbx");
        System.out.println(list.getFirst()+list.getLast());
    }
}
举报

相关推荐

铂西学习日记---队列与栈

铂西学习日记---字符字节转换流

铂西学习日记---字节数组流

铂西学习日记---对象流与序列化

[硫化铂]treecnt

[硫化铂]旅行

[硫化铂]货币

[硫化铂]等待

0 条评论