自记录-ArrayList和LinkedList区别

List在Java中被定义为一个接口,是一个有序的集合,可以包含重复的元素,提供了按索引访问的方式,它继承Collection。

List有两个重要的实现类:ArrayListLinkedList

ArrayList

由于是基于数组的集合,所以具备了一些数组的特征:

例如,初始化大小不指定,默认是10,当超过10的时候,自动扩容,默认1.5

int newCapacity = oldCapacity + (oldCapacity >> 1);

elementData = Arrays.copyOf(elementData,newCapacity(minCapacity));

搜索和读取数据很快,删除较慢(数据量大才有体现)

LinkedList

基于链表的结合,具备链表的一些特征,删除较快,搜索和读取较慢(数据量大才有体现)

List<String> arrayList1 = new ArrayList<>();
List<String> arrayList2 = new ArrayList<>(100);
List<String> arrayList3 = new ArrayList<>(arrayList2);
arrayList1.add("1");
arrayList1.add("a");
arrayList1.add(0,"b");
arrayList2.add("a2");
arrayList2.add("b2");
arrayList1.addAll(arrayList2);//
System.out.println(arrayList1.contains(1));//内部是通过equals方法遍历判断的
System.out.println(CollectionUtil.isEmpty(arrayList1));
System.out.println(CollectionUtil.isNotEmpty(arrayList1));
List<List<String>> partitionList = Lists.partition(arrayList1, 10);//new Lists.RandomAccessPartition(list, size)
//		arrayList1.forEach(item -> {
//			System.out.println(item);
//		});

List<String> linkedList = new LinkedList<>();
List<List<String>> partitionList2 = Lists.partition(arrayList1, 10);// new Lists.Partition(list, size

// RandomAccess 支持随机访问的标识 ArrayList有,LinkedList没有,具体区别从下面方法可看出

//indexedBinarySearch for循环,根据角标匹配
Collections.binarySearch(arrayList1, "1");
//iteratorBinarySearch,迭代器遍历匹配
Collections.binarySearch(linkedList, "1");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值