Java中向Set集合添加整数值的批量操作与初始化方法
Java Set批量添加元素与初始化问题解答
问题1:一次性向Set中添加多个整数值的实现方式
- 方法1:使用
addAll批量导入集合元素
适用所有Java版本,先将待添加元素放入列表,再批量写入Set:
注意:import java.util.Arrays; import java.util.HashSet; import java.util.Set; Set<Integer> intSet = new HashSet<>(); // Java 8及以下用Arrays.asList intSet.addAll(Arrays.asList(4, 7, 12, 15, 20)); // Java 9及以上推荐用List.of,性能更优 // intSet.addAll(List.of(4, 7, 12, 15, 20));Arrays.asList()传入基本类型数组会被识别为单个元素,仅传入多个包装类元素时符合预期 - 方法2:使用Stream流批量生成(Java 8及以上)
直接通过流收集生成Set,适合链式操作场景:import java.util.stream.Collectors; import java.util.stream.Stream; import java.util.HashSet; import java.util.Set; // 不指定Set实现类,返回默认通用Set实例 Set<Integer> intSet = Stream.of(4, 7, 12, 15, 20).collect(Collectors.toSet()); // 强制指定生成HashSet实例 // Set<Integer> intSet = Stream.of(4,7,12).collect(Collectors.toCollection(HashSet::new));
问题2:声明HashSet的同时完成元素初始化的实现方式
- 方法1:构造函数传入初始集合(全版本兼容,最推荐)
直接将预定义的元素列表传入HashSet构造函数,初始化和赋值一步完成:import java.util.Arrays; import java.util.HashSet; import java.util.Set; // Java 8及以下 Set<Integer> intSet = new HashSet<>(Arrays.asList(4, 7, 12)); // Java 9及以上 // Set<Integer> intSet = new HashSet<>(Set.of(4, 7, 12)); - 方法2:
Set.of工厂方法(Java 9及以上)
直接生成不可变Set实例,无额外对象开销,适合不需要修改的集合场景:import java.util.Set; // 生成不可变Set,后续调用add/remove会抛出UnsupportedOperationException Set<Integer> intSet = Set.of(4, 7, 12); - 方法3:双大括号初始化(不推荐生产环境使用)
本质是生成匿名内部类并在初始化块中添加元素,语法简洁但有额外开销,还可能导致内存泄漏:import java.util.HashSet; import java.util.Set; Set<Integer> intSet = new HashSet<Integer>() {{ add(4); add(7); add(12); }};
注意:双大括号初始化生成的类会隐式持有外部类引用,若集合生命周期长于外部类会引发内存泄漏,仅适合临时测试场景使用
内容的提问来源于stack exchange,提问作者Laura
相关产品推荐
相关产品推荐

