首页 > 编程语言 > 详细

Java集合类(1)-List

时间:2020-08-18 18:06:47      阅读:75      评论:0      收藏:0      [点我收藏+]

一 ArrayList

内部通过数组实现,允许对元素进行快速随机访问。数组大小不满足时需要增加存储能力,就要将数据复制到新的存储空间中。插入或删除时,需要对数组进行移动复制,代价较高。因此,适合查找和遍历,不适合插入和删除。ArrayList是线程不安全的。当容量不够时,ArrayList当前容量*1.5+1。

代码引用:https://www.cnblogs.com/panbingqi/p/11041182.html

public class ArrayListInThread implements Runnable{

    //线程不安全
    private List threadList = new ArrayList();
//线程安全
//private List threadList = Collections.synchronizedList(new ArrayList());

    @Override
    public void run() {
        try {
            Thread.sleep(10);
        }catch (InterruptedException e){
            e.printStackTrace();
        }
//把当前线程名称加入list中
        threadList.add(Thread.currentThread().getName());
    }

    public static void main(String[] args) throws InterruptedException{
        ArrayListInThread listThread = new ArrayListInThread();


        for(int i = 0; i < 100; i++){
            Thread thread = new Thread(listThread, String.valueOf(i));
            thread.start();
        }

//等待子线程执行完
        Thread.sleep(2000);

        System.out.println(listThread.threadList.size());
//输出list中的值
        for(int i = 0; i < listThread.threadList.size(); i++){
            if(listThread.threadList.get(i) == null){
                System.out.println();;
            }
            System.out.print(listThread.threadList.get(i) + " ");
        }
    }
}

Collections.synchronizedList(new LinkedList<String>())

Collections.synchronizedList(new LinkedList<String>())

通过加锁实现线程同步。

二 Vector

通过数组实现,Vector支持线程同步,即某一时刻只有一个线程能够写Vector,因此,访问它比访问ArrayList慢。

三 LinkedList

使用链表结构存储数组,很适合数据的动态插入与删除,随机访问速度比较慢。另外,他还提供了 List 接口中没有定义的方法,专门用于操作表头和表尾元素,可以当作堆栈、队列和双向队列使用。

 

Java集合类(1)-List

原文:https://www.cnblogs.com/liuhaichuan/p/13524732.html

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