首页 > 其他 > 详细

集合Collection-List-(ArrayList/LinkedList)

时间:2020-06-27 21:23:54      阅读:70      评论:0      收藏:0      [点我收藏+]

 

ArrayList集合
底层是数组,如何实现自动扩容?简言之底层代码创建1.5倍于之前长度的数组,并将旧的数组复制到新的数组中。
特点:查询快,增删慢(相对而言,数据量一大就不一定了)
源码需了解内容: ArrayList底层数组的初始化长度是0
        第一次添加元素的时候扩容到10
        扩容时机:当元素个数超过数组长度时
        扩容规则:之前长度的1.5倍( int newCapacity = oldCapacity + (oldCapacity >> 1);)
LinkedList集合
底层是链表,是双向链表,每一个结点分三个部分,分别存储了上一结点的地址,数据,下一结点的地址。
特点:查询慢,增删快(相对而言,数据量一大就不一定了)
源码需了解内容: 01.元素存储形式是以Node的形式进行存储的,内含三个变量:
        a. 前一个元素的地址
        b. 元素值
        c. 后一个元素的地址值
        02.查询方式是以中心点进行判断是从头进行遍历,还是从尾部进行遍历(越靠近之间就越慢)

ArrayList集合删除元素(fori)

技术分享图片

 

/* public boolean removeIf(Predicate<? super E> filter) */
//根据条件移除集合元素(参数是lambda表达式(参数:list中元素类型)->{ return 需过滤元素的条件语句})

import java.util.ArrayList;
/* public boolean removeIf(Predicate<? super E> filter) */

public class CollectionDemo {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("aaaa");
        list.add("aaa");
        list.add("aaab");
        list.add("aaa");

        //根据条件移除集合元素(参数是lambda表达式(参数:list中元素类型)->{ return 需过滤元素的条件语句})
        list.removeIf((String s) ->{
           return s.length()==4;
        });


        System.out.println(list);
    }
}

技术分享图片

 

 

 

集合Collection-List-(ArrayList/LinkedList)

原文:https://www.cnblogs.com/yifas/p/13199818.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!