java取出list中某几个属性组成一个新集合的几种方式
作者:齐穗穗
在Java开发中经常需要对List中的对象进行一些操作,例如对某个字段进行过滤、排序等,这篇文章主要给大家介绍了关于java取出list中某几个属性组成一个新集合的几种方式,需要的朋友可以参考下
我用了三种方式,1:forEach循环;2:for循环;3:stream方法
package org.springblade.test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Test {
@org.junit.jupiter.api.Test
public void aaa() {
User user1 = new User("张三", 10, 1);
User user2 = new User("李四 ", 11, 1);
User user3 = new User("王五", 12, 0);
List<User> users = new ArrayList<>();
users.add(user1);
users.add(user2);
users.add(user3);
//我这里都转为了List<Map<String, Object>>数组,也可以转换为一个新的实体类(自行创建)
//使用forEach循环转化
List<Map<String, Object>> infosFromForEach = new ArrayList<>();
users.forEach(user -> {
Map<String, Object> singleMap = new HashMap<>();
singleMap.put("age", user.getAge());
singleMap.put("gender", user.getGender());
infosFromForEach.add(singleMap);
});
//使用for循环转化
List<Map<String, Object>> infosFromFor = new ArrayList<>();
for (User user : users) {
Map<String, Object> singleMap = new HashMap<>();
singleMap.put("age", user.getAge());
singleMap.put("gender", user.getGender());
infosFromFor.add(singleMap);
}
//使用stream流实现转换
List<Map<String, Object>> collect = users.stream().map(user -> {
Map<String, Object> singleMap = new HashMap<>();
singleMap.put("age", user.getAge());
singleMap.put("gender", user.getGender());
return singleMap;
}).collect(Collectors.toList());
}
}
class User {
//姓名
private String name;
//年龄
private Integer age;
//性别:0:女;1:男
private Integer gender;
public User() {
}
public User(String name, Integer age, Integer gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
public String getName() {
return name;
}
public User setName(String name) {
this.name = name;
return this;
}
public Integer getAge() {
return age;
}
public User setAge(Integer age) {
this.age = age;
return this;
}
public Integer getGender() {
return gender;
}
public User setGender(Integer gender) {
this.gender = gender;
return this;
}
}附:对象集合的一些常用操作-取出某个属性组成新的集合、集合与逗号拼接的字符串相互转换、对象集合根据某一属性分组
1.将对象集合中的某个属性取出组成一个单独的新的集合
有很多时候我们会遇到这样的场景,就是要将一个list中的某一个元素中的某一属性单独拿出来放在一个新的list里面,这时候,我们就可以用以下的方法来进行实现:
List<User> userList = new ArrayList<>(); List<String> nameList= userList.stream().map(User::getName).collect(Collectors.toList());
2.将对象集合中的某个属性取出,用逗号拼接成一个字符
2.1 可以foreach循环直接拼接对象该属性
//用逗号分割
StringJoiner stringJoiner = new StringJoiner(",");
userList.forEach(user -> {
//将实体中的某个字段获取到 添加到stringJoiner
stringJoiner.add(user.getName());
});
//最终得到的字符串
String toString = stringJoiner.toString();
2.2 进行1操作(将某个属性取出组成新的集合)后,将新的集合用逗号拼接
//利用Guava的Joiner
String nameListStr = Joiner,on(",").join(nameList);
//利用Apache Commons的StringUtils
String nameListStr = StringUtils.join(nameList.toArray(), ",");3.将用逗号拼接的字符串转换成String集合
String str = "hudson,zhuang,lisa";
List<String> result = Arrays.asList(str.split(","));4.将对象集合利用Java8新特性按照某一属性进行分组
//例如这里将User类的集合userList按照性别进行分组
Map<String, List<User>> groupBySex = new HashMap<>();
groupBySex = userList.stream().collect(Collectors.groupingBy(User::getSex));
//获得男性集合
List<User> manList = groupBySex.get("男");
//写循环
groupBySex.keySet().for纯粹记录一下
总结
到此这篇关于java取出list中某几个属性组成一个新集合的几种方式的文章就介绍到这了,更多相关java取出list属性组成新集合内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
