当前位置: 代码网 > it编程>编程语言>Java > java取出list中某几个属性组成一个新集合的几种方式

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

2024年05月19日 Java 我要评论
我用了三种方式,1:foreach循环;2:for循环;3:stream方法package org.springblade.test; import java.util.arraylist;impor

我用了三种方式,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属性组成新集合内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com