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