底层实现
文章平均质量分 76
WINGZINGLIU
一只JAVA菜鸡
展开
-
Arrays.asList生成的list无法进行修改原因附源码解析java.lang.UnsupportedOperationException
我们在使用Arrays.asList生成list,再对生成的list进行操作,例如增加元素,删除元素等等会报一个java.lang.UnsupportedOperationException异常,即不支持操作类型异常。之前在文档中有看到一句话asList方法会返回一个由数组生成的固定大小的 List。为什么生成的list是固定长度呢,我们平时在使用arrayList的时候存在一个扩容机...原创 2020-04-15 18:17:55 · 833 阅读 · 0 评论 -
Arrays.asList的源码解析
在日常开发中我们经常把数组转换成list类型,使用到的方法是java.util.Arrays.asList();但是可能出现的一个问题是结果不是如我们所期盼的,比如以下代码:int[] array = { 1, 2, 3 };List list = Arrays.asList(array);System.out.println(list.size());可能很多朋友都觉得这个li...原创 2020-04-07 20:10:01 · 330 阅读 · 0 评论 -
ArrayList和LinkedList的区别、扩容机制以及底层实现
ArrayListArrayList的底层实现为数组存储在内存中,线程不同步。可通过数组下标的形式进行查找,所以在查询方面的效率较为出色,常用在查询较多的情景下。LinkedListLinkedList的底层实现为链表形式,也为线程不同步。而链表的底层也决定了它在查询方面不如数组底层的ArrayList而在指定位置插入等修改操作下,性能优于ArrayList。...原创 2018-11-08 13:26:07 · 11626 阅读 · 0 评论 -
java.util.ConcurrentModificationException异常原因(附源码分析)
前言今天看书看到关于for-each相比jdk1.5之前的for循环的优缺点,有一个地方说道"for-each循环中不能使用list.remove()"草草就带过去了,自己不太理解为什么,然后决定自己写一个简单的Demo进行测试一下。public class WingzingDemo { public static void main(String[] args) { ...原创 2019-02-27 14:36:29 · 456 阅读 · 1 评论 -
ArrayList扩容机制及不可变性详解(附源码分析)
前言我们都知道ArrayList是不可变的,但是为什么是不可变的呢?网上能搜索到ArrayList扩容机制是扩容为原本的1.5倍,那是怎么去实现的呢?package org.lyz;import java.util.ArrayList;import java.util.List;public class WINGZINGDemo { public static void ...原创 2019-02-28 15:13:23 · 351 阅读 · 0 评论