01 添加元素组

1 添加元素组

利用 Collections.addAll() 为集合类型添加元素组。

package com.hcong.collections;

import java.util.*;

/**
 * @Classname AddingGroups
 * @Date 2023/4/4 15:51
 * @Created by HCong
 */
public class AddingGroups {
    public static void main(String[] args) {
        // 1. ArrayList 构造方法添加元素
        Collection<Integer> collection = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
        // 2. Collections.addAll(一个 collection, 数组)
        Integer[] moreInts = {6, 7, 8, 9, 10};
        Collections.addAll(collection, moreInts);
        // 3. Collections.addAll(一个 collection, 可变列表)
        Collections.addAll(collection, 11, 12, 13, 14, 15);
        System.out.println(collection);
    }
}

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

2 Arrays.asList() 的底层数据结构

Arrays.asList() 的输出是一个 List,但是其底层实现是数组,没法调整大小。因此,如果尝试在这个List 上调用 add()remove(),由于这两个方法会尝试修改数组大小,所以会在运行时得到“Unsupported Operation(不支持的操作)” 错误。

package com.hcong.collections;

import com.sun.jdi.PathSearchingVirtualMachine;

import java.util.*;

/**
 * @Classname AsListInference
 * @Date 2023/4/4 16:04
 * @Created by HCong
 */
class Snow {
}

class Powder extends Snow {
}

class Light extends Powder {
}

class Heavy extends Powder {
}

class Crusty extends Snow {
}

class Slush extends Snow {
}

public class AsListInference {
    public static void main(String[] args) {
        Collection<Snow> snow1 = Arrays.asList(new Crusty(), new Slush(), new Powder());
        // snow1.add(new Heavy()); // Exception

        List<Snow> snow2 = Arrays.asList(
                new Light(), new Heavy());
        //- snow2.add(new Slush()); // Exception

        List<Snow> snow3 = new ArrayList<>();
        Collections.addAll(snow3, new Light(), new Heavy(), new Powder());
        snow3.add(new Crusty());

        List<Snow> snow4 = Arrays.<Snow>asList(new Light(), new Heavy(), new Slush());
        //- snow4.add(new Powder()); // Exception
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是聪聪黄吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值