【Java-集合】ArrayList、LinkedList 介绍及遍历操作

1、ArrayList

  1. 数据结构:ArrayList 底层数据结构是 Object[] 数组,默认初始容量是 10。
  2. 扩容机制:按照原来的 1.5 倍扩容,源码中采用的算法是 newCapacity = oldCapacity + (oldCapacity >> 1) ,也就是老容量+老容量/2。
  3. 安全性:线程不安全。
  4. 优缺点:数组具有随机访问的特性,所以查询和修改快,但是增删效率低。

遍历操作示例:

public static void main(String[] args) {
        ArrayList<String> list = new ArrayList();
        list.add("Hello");
        list.add("World ");

        // forEach 遍历
        list.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });

        // Lambda 表达式遍历
        list.forEach((s)-> System.out.println(s));

        // 迭代器遍历
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }

        // Lambda 表达式+Iterator
        Iterator<String> iterator2 = list.iterator();
        iterator2.forEachRemaining(s -> System.out.println(s));

        // for 循环
        for (String s : list) {
            System.out.println(s);
        }
    }

2、LinkedList

  1. 数据结构:LinkedList 底层数据结构是 双向链表。
  2. 安全性:线程不安全。
  3. 优缺点:链表查询和修改慢,但是增删效率高。

遍历操作:

@Test
    public void test(){
        LinkedList<String> linkedList = new LinkedList<>();
        linkedList.add("Hello ");
        linkedList.add("world");

        // forEach
        linkedList.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });

        // forEach + Lambda
        linkedList.forEach(s -> System.out.println(s));

        // 迭代器
        Iterator<String> iterator = linkedList.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }

        // Lambda+迭代器
        Iterator<String> iterator1 = linkedList.iterator();
        iterator1.forEachRemaining(s-> System.out.println(s));

        // for
        for (String s : linkedList) {
            System.out.println(s);
        }

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值