栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA 集合框架 Collection的子接口List (三)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA 集合框架 Collection的子接口List (三)

1、知识点

Collection 接口:单列集合,用来存储一个一个的对象=====List 接口:存储有序可重复的数据========ArrayList:List 接口的主要实现类,效率高但线程不安全,底层使用Object[] elementData存储(底层数组)========linkedList:(底层使用双向链表)。对于频繁的删除、插入操作使用他效率更高========Vector:List 接口的古老实现类,效率低但线程安全,底层使用Object[] 存储*(即便涉及到线程安全问题也几乎用不到,)
三者异同
同:存取有序重复的数据
不同: 2、ArrayList 源码分析

jdk 7
ArrayList arrayList1 = new ArrayList();
//底层创建了长度是10 的Object[] 数组的elementData
arrayList1.add(123);如果此次添加导致底层数容量不够,则扩容
默认情况下扩容为原来的1.5倍,同时需要将原来数组中的数据复制到新数组中
结论:建议开发是使用:ArrayList arrayList2 = new ArrayList(40);

jdk 8
ArrayList arrayList1 = new ArrayList();
//底层初始化为Object[] EMPTY_ELEMENTDATA = {};并没有创建数组(申请内存)
arrayList1.add(123); //第一次调用add()时,底层才创建长度为10的数组,并将数据添加到数组中。
后续和JDK 7 一样

结论:jdk 8 类似于单例模式的懒汉式。

3、linkedList 源码分析

底层是一个双向链表。

4、List 接口中常用方法
 @Test
    //List的测试学习
    public void test2(){

        ArrayList arrayList1 = new ArrayList();
        ArrayList arrayList2 = new ArrayList(40);

        arrayList2.add(158);
        arrayList2.add(897);
        linkedList linkedList = new linkedList();
        //底层创建了长度是10 的Object[] 数组的elementData
        arrayList1.add(123);
        arrayList1.add("werq");
        arrayList1.add(new Person());
        arrayList1.add(new Person("Tom","程序员",23));

        System.out.println("arrayList1长度为:"+arrayList1.size());

        arrayList1.addAll(arrayList2);
        System.out.println("arrayList1长度为:"+arrayList1.size());
        Iterator iterator = arrayList1.iterator();

        System.out.println("遍历结果为:");
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }
 @Test
    //List的测试学习
    public void test2(){

        ArrayList arrayList1 = new ArrayList();
        ArrayList arrayList2 = new ArrayList(40);

        arrayList2.add(158);
        arrayList2.add(897);
        linkedList linkedList = new linkedList();
        //底层创建了长度是10 的Object[] 数组的elementData
        arrayList1.add(123);
        arrayList1.add("werq");
        arrayList1.add(new Person());
        arrayList1.add(new Person("Tom","程序员",23));

        System.out.println("arrayList1长度为:"+arrayList1.size());

        arrayList1.addAll(arrayList2);
        System.out.println("arrayList1长度为:"+arrayList1.size());
        Iterator iterator = arrayList1.iterator();

        System.out.println("遍历结果为:");
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
        System.out.println("**********************");
        System.out.println(arrayList1.subList(1,5)); 
        System.out.println( arrayList1.isEmpty() );

        //int indesOf(Object obj):返回在集合中首次出现的位置
        //lastIndexOf(Object obj):返回在集合中首次出现的位置
        //Object remove(int index):移除指定index位置的元素,并返回次元素
        //Object set(int index,Object ele):设置指定位置的元素为ele
        //

    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/719999.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号