ArrayList的问题以及解决方案

发布于:2021-09-26 05:17:11

单线程环境下使用ArrayList

List list =new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
for (String element:list){
System.out.println(element);
}

我们经常在项目中会这样使用ArrayList,我们来分析一下,当我们执行底层干了些什么


List list =new ArrayList<>();

底层创建了一个空的数组,初始化值为10,当我们执行add方法的时候,如果超过10.那么就会扩容,扩容值的大小为原值的一半,也就是5个,使用下列方法进行扩容


elementData = Arrays.copyOf(elementData, newCapacity);

但是ArrayList在单线程下是线程不安全的


多线程下使用ArrayList


List list1 =new ArrayList<>();
for (int i=0;i<50;i++){
new Thread(()->{
list1.add(UUID.randomUUID().toString().substring(0,8));

相关推荐

最新更新

猜你喜欢