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
}
}