java取出list中某幾個(gè)屬性組成一個(gè)新集合的幾種方式
我用了三種方式,1:forEach循環(huán);2:for循環(huán);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); //我這里都轉(zhuǎn)為了List<Map<String, Object>>數(shù)組,也可以轉(zhuǎn)換為一個(gè)新的實(shí)體類(自行創(chuàng)建) //使用forEach循環(huán)轉(zhuǎn)化 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循環(huán)轉(zhuǎn)化 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流實(shí)現(xiàn)轉(zhuǎn)換 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; } }
附:對(duì)象集合的一些常用操作-取出某個(gè)屬性組成新的集合、集合與逗號(hào)拼接的字符串相互轉(zhuǎn)換、對(duì)象集合根據(jù)某一屬性分組
1.將對(duì)象集合中的某個(gè)屬性取出組成一個(gè)單獨(dú)的新的集合
有很多時(shí)候我們會(huì)遇到這樣的場景,就是要將一個(gè)list中的某一個(gè)元素中的某一屬性單獨(dú)拿出來放在一個(gè)新的list里面,這時(shí)候,我們就可以用以下的方法來進(jìn)行實(shí)現(xiàn):
List<User> userList = new ArrayList<>(); List<String> nameList= userList.stream().map(User::getName).collect(Collectors.toList());
2.將對(duì)象集合中的某個(gè)屬性取出,用逗號(hào)拼接成一個(gè)字符
2.1 可以foreach循環(huán)直接拼接對(duì)象該屬性
//用逗號(hào)分割 StringJoiner stringJoiner = new StringJoiner(","); userList.forEach(user -> { //將實(shí)體中的某個(gè)字段獲取到 添加到stringJoiner stringJoiner.add(user.getName()); }); //最終得到的字符串 String toString = stringJoiner.toString();
2.2 進(jìn)行1操作(將某個(gè)屬性取出組成新的集合)后,將新的集合用逗號(hào)拼接
//利用Guava的Joiner String nameListStr = Joiner,on(",").join(nameList); //利用Apache Commons的StringUtils String nameListStr = StringUtils.join(nameList.toArray(), ",");
3.將用逗號(hào)拼接的字符串轉(zhuǎn)換成String集合
String str = "hudson,zhuang,lisa"; List<String> result = Arrays.asList(str.split(","));
4.將對(duì)象集合利用Java8新特性按照某一屬性進(jìn)行分組
//例如這里將User類的集合userList按照性別進(jìn)行分組 Map<String, List<User>> groupBySex = new HashMap<>(); groupBySex = userList.stream().collect(Collectors.groupingBy(User::getSex)); //獲得男性集合 List<User> manList = groupBySex.get("男"); //寫循環(huán) groupBySex.keySet().for
純粹記錄一下
總結(jié)
到此這篇關(guān)于java取出list中某幾個(gè)屬性組成一個(gè)新集合的幾種方式的文章就介紹到這了,更多相關(guān)java取出list屬性組成新集合內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- java集合List快速實(shí)現(xiàn)重復(fù)判斷的方法小結(jié)
- Java?hutool?List集合對(duì)象拷貝示例代碼
- java的list集合排序自定義元素方式
- Java中hutool?List集合對(duì)象拷貝案例代碼
- Java將不同的List集合復(fù)制到另一個(gè)集合常見的方法
- Java?List集合取交集的五種常見方式總結(jié)
- Java?List集合取交集的8種不同實(shí)現(xiàn)方式總結(jié)
- Java實(shí)現(xiàn)List集合手動(dòng)分頁的方法
- java如何獲取兩個(gè)List集合之間的交集、差集、并集
- Java中Set集合轉(zhuǎn)為List集合常見的兩種方式
- Java集合中的List超詳細(xì)講解
相關(guān)文章
總結(jié)Java集合類操作優(yōu)化經(jīng)驗(yàn)
本文主要介紹的就是集合框架的使用經(jīng)驗(yàn),告訴大家如何高效、方便地管理對(duì)象,所有代碼基于JDK7,需要的朋友可以參考下2015-08-08arthas?jprofiler做復(fù)雜鏈路的調(diào)用分析
這篇文章主要為大家介紹了arthas?jprofiler做復(fù)雜鏈路的調(diào)用分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06構(gòu)建SpringBoot+MyBatis+Freemarker的項(xiàng)目詳解
在本篇內(nèi)容里小編給大家整理的是關(guān)于構(gòu)建SpringBoot+MyBatis+Freemarker的項(xiàng)目的具體步驟以及實(shí)例代碼,需要的朋友們參考下。2019-06-06java并發(fā)編程專題(六)----淺析(JUC)Semaphore
這篇文章主要介紹了java JUC)Semaphore的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07解析Apache Dubbo的SPI實(shí)現(xiàn)機(jī)制
SPI全稱為Service Provider Interface,對(duì)應(yīng)中文為服務(wù)發(fā)現(xiàn)機(jī)制。SPI類似一種可插拔機(jī)制,首先需要定義一個(gè)接口或一個(gè)約定,然后不同的場景可以對(duì)其進(jìn)行實(shí)現(xiàn),調(diào)用方在使用的時(shí)候無需過多關(guān)注具體的實(shí)現(xiàn)細(xì)節(jié)2021-06-06Maven里面沒有plugins dependence問題解決
在整合Nacos和Dubbo時(shí),出現(xiàn)Maven錯(cuò)誤可以通過檢查父模塊的依賴解決,問題源于MySQL驅(qū)動(dòng)版本不兼容,移除特定依賴并刷新pom文件可恢復(fù)項(xiàng)目,執(zhí)行clean命令,查看報(bào)錯(cuò),感興趣的可以了解一下2024-10-10使用@Autowired注解警告Field injection is not recommended的解決
這篇文章主要介紹了使用@Autowired注解警告Field injection is not recommended的解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04