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ì)遇到這樣的場(chǎng)景,就是要將一個(gè)list中的某一個(gè)元素中的某一屬性單獨(dú)拿出來(lái)放在一個(gè)新的list里面,這時(shí)候,我們就可以用以下的方法來(lái)進(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("男");
//寫(xiě)循環(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è)集合常見(jiàn)的方法
- Java?List集合取交集的五種常見(jiàn)方式總結(jié)
- Java?List集合取交集的8種不同實(shí)現(xiàn)方式總結(jié)
- Java實(shí)現(xiàn)List集合手動(dòng)分頁(yè)的方法
- java如何獲取兩個(gè)List集合之間的交集、差集、并集
- Java中Set集合轉(zhuǎn)為L(zhǎng)ist集合常見(jiàn)的兩種方式
- Java集合中的List超詳細(xì)講解
相關(guān)文章
總結(jié)Java集合類操作優(yōu)化經(jīng)驗(yàn)
本文主要介紹的就是集合框架的使用經(jīng)驗(yàn),告訴大家如何高效、方便地管理對(duì)象,所有代碼基于JDK7,需要的朋友可以參考下2015-08-08
arthas?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-06
java并發(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è)約定,然后不同的場(chǎng)景可以對(duì)其進(jìn)行實(shí)現(xiàn),調(diào)用方在使用的時(shí)候無(wú)需過(guò)多關(guān)注具體的實(shí)現(xiàn)細(xì)節(jié)2021-06-06
Maven里面沒(méi)有plugins dependence問(wèn)題解決
在整合Nacos和Dubbo時(shí),出現(xiàn)Maven錯(cuò)誤可以通過(guò)檢查父模塊的依賴解決,問(wèn)題源于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的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04

