在Java中将列表转换为集的最简单的方法是什么?
当前回答
我将在转换为set之前执行Null检查。
if(myList != null){
Set<Foo> foo = new HashSet<Foo>(myList);
}
其他回答
Set<Foo> foo = new HashSet<Foo>(myList);
在Java 1.8中,流API可用于将列表转换为集合。例如,下面的代码显示了一个列表到一个集合的转换:
List<String> empList = Arrays.asList("java", "python", ".net", "javaScript", "php");
Set<String> set = empList.stream().collect(Collectors.toSet());
set.forEach(value -> System.out.printf("%s ", value));
如果列表包含对象,我想创建一个集合:
List<Employee> empList = Arrays.asList(new Employee(1, 1000, "Chandra Shekhar", 6000),
new Employee(2, 1000, "Rajesh", 8000), new Employee(3, 1004, "Rahul", 9000),
new Employee(4, 1001, "Suresh", 12000), new Employee(5, 1004, "Satosh", 7000));
Set<String> set = empList.stream().map(emp -> emp.getName()).collect(Collectors.toSet());
System.out.println(set);
对于Java 8来说非常简单:
List < UserEntity > vList= new ArrayList<>();
vList= service(...);
Set<UserEntity> vSet= vList.stream().collect(Collectors.toSet());
我将在转换为set之前执行Null检查。
if(myList != null){
Set<Foo> foo = new HashSet<Foo>(myList);
}
带有Optional.ofNullable的更具Java 8弹性的解决方案
Set<Foo> mySet = Optional.ofNullable(myList).map(HashSet::new).orElse(null);
推荐文章
- 在流中使用Java 8 foreach循环移动到下一项
- 访问限制:'Application'类型不是API(必需库rt.jar的限制)
- 用Java计算两个日期之间的天数
- 如何配置slf4j-simple
- 在Jar文件中运行类
- 带参数的可运行?
- 如何检查IEnumerable是否为空或空?
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 我可以在Java中设置enum起始值吗?
- Java中的回调函数
- c#和Java中的泛型有什么不同?和模板在c++ ?
- 在Java中,流相对于循环的优势是什么?
- Jersey在未找到InjectionManagerFactory时停止工作
- 在Java流是peek真的只是调试?
- Recyclerview不调用onCreateViewHolder