java取出list中某几个属性组成一个新集合的几种方式

 更新时间:2024年03月28日 09:09:32   作者:齐穗穗  
在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属性组成新集合内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java安全编码指南之:Mutability可变性详解

    java安全编码指南之:Mutability可变性详解

    这篇文章主要介绍了java安全编码指南之:Mutability可变性详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • Spring中@PathVariable和@RequestParam注解的用法区别

    Spring中@PathVariable和@RequestParam注解的用法区别

    这篇文章主要介绍了Spring中@PathVariable和@RequestParam注解的用法区别,@PathVariable 是 Spring 框架中的一个注解,用于将 URL 中的变量绑定到方法的参数上,它通常用于处理 RESTful 风格的请求,从 URL 中提取参数值,并将其传递给方法进行处理,需要的朋友可以参考下
    2024-01-01
  • 浅析mybatis和spring整合的实现过程

    浅析mybatis和spring整合的实现过程

    据官方的说法,在Mybatis3问世之前,Spring3的开发工作就已经完成了,所以Spring3中还是没有对Mybatis3的支持。因此由Mybatis社区自己开发了一个Mybatis-Spring用来满足Mybatis用户整合Spring的需求,下面通过Mybatis-Spring来整合Mybatis跟Spring的用法做介绍
    2015-10-10
  • SpringBoot中干掉Whitelabel Error Page返回自定义内容的实现

    SpringBoot中干掉Whitelabel Error Page返回自定义内容的实现

    这篇文章主要介绍了SpringBoot中干掉Whitelabel Error Page返回自定义内容的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Java集合框架之List ArrayList LinkedList使用详解刨析

    Java集合框架之List ArrayList LinkedList使用详解刨析

    早在 Java 2 中之前,Java 就提供了特设类。比如:Dictionary, Vector, Stack, 和 Properties 这些类用来存储和操作对象组。虽然这些类都非常有用,但是它们缺少一个核心的,统一的主题。由于这个原因,使用 Vector 类的方式和使用 Properties 类的方式有着很大不同
    2021-10-10
  • SpringBoot与Elasticsearch8.0集成的实现步骤

    SpringBoot与Elasticsearch8.0集成的实现步骤

    本文介绍了SpringBoot与Elasticsearch8.0的集成方法和最佳实践,详细探讨了Elasticsearch8.0的安全增强、性能优化、API改进等新特性,下面就一起来了解一下
    2026-04-04
  • Java中json处理工具JsonPath的使用教程

    Java中json处理工具JsonPath的使用教程

    JsonPath类似于XPath,是一种json数据结构节点定位和导航表达式语言,这篇文章主要为大家介绍了JsonPath的基本使用,需要的小伙伴可以参考下
    2023-08-08
  • Java根据控制台实现定位异常

    Java根据控制台实现定位异常

    这篇文章主要介绍了Java根据控制台定位异常,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • 详解如何更改SpringBoot TomCat运行方式

    详解如何更改SpringBoot TomCat运行方式

    这篇文章主要介绍了详解如何更改SpringBoot TomCat运行方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Java中的Set、List、Map的用法与区别介绍

    Java中的Set、List、Map的用法与区别介绍

    这篇文章主要介绍了Java中的Set、List、Map的用法与区别,需要的朋友可以参考下
    2016-06-06

最新评论