關(guān)于JAVA中stream流的基礎(chǔ)處理(獲取對(duì)象字段和對(duì)象批量處理等)
Stream流程處理情況
1:按指定字段獲取集合對(duì)象中的字段:
List<String> idList = initUserList.stream().map(User::getId).collect(Collectors.toList());
2:按指定字段對(duì)集合對(duì)象進(jìn)行排序:
List<User> collect = initUserList.stream().sorted(Comparator.comparing(User::getAge)).collect(Collectors.toList());
3: 按指定字段對(duì)集合對(duì)象去重處理
List<User> collect = initUserList.stream().collect(Collectors.collectingAndThen( Collectors.toCollection(()->new TreeSet<>(Comparator.comparing(User::getName))), ArrayList::new));
4: 對(duì)集合對(duì)象批量處理
initUserList.forEach((User user) ->user.setName(user.getName()+"123"));
5: 將集合對(duì)象中指定字段轉(zhuǎn)數(shù)組
String[] strings = initUserList.stream().map(User::getId).toArray(String[]::new);
完整代碼如下:
對(duì)象類:
package com.dom; import java.util.Date; /** * @author Administrator */ public class User { private String id; private String name; private String sex; private int age; private Date birthday; @Override public String toString() { return "User{" + "id='" + id + '\'' + ", name='" + name + '\'' + ", sex='" + sex + '\'' + ", age=" + age + ", birthday=" + birthday + '}'; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } }
初始化構(gòu)建類:
package com.create; import com.dom.User; import java.util.*; public class CreateUser { public static List<User> getInitUserList(){ List<User> list = new ArrayList<>(); for (int i = 0; i < 10; i++) { User user = new User(); user.setId(String.valueOf(i*10)); user.setName("名稱"+i); user.setAge(i+2*i); if (i%3!=0){ user.setSex("男"); }else{ user.setSex("女"); } user.setBirthday(new Date(new Random().nextLong()*(369 - 258)*i)); list.add(user); } //設(shè)置重復(fù)名稱用戶 User user1 = new User(); user1.setId(String.valueOf(37)); user1.setName("名稱"+3); user1.setAge(11); user1.setSex("男"); user1.setBirthday(new Date(new Random().nextLong()*(369 - 258)*2)); list.add(user1); User user2 = new User(); user2.setId(String.valueOf(58)); user2.setName("名稱"+5); user2.setAge(17); user2.setSex("女"); user2.setBirthday(new Date(new Random().nextLong()*(369 - 258)*2)); list.add(user2); return list; } }
主類:
package com.test.roc; import com.create.CreateUser; import com.dom.User; import java.util.List; public class ListTest { public static void main(String[] args) { List<User> initUserList = CreateUser.getInitUserList(); setOut(initUserList); System.out.println("----------------↑↑↑↑↑↑↑↑↑↑↓↓↓↓↓↓↓↓↓↓-------------------"); //流處理 //1按指定字段獲取集合對(duì)象中的字段 // List<String> idList = initUserList.stream().map(User::getId).collect(Collectors.toList()); //2 按指定字段對(duì)集合對(duì)象進(jìn)行排序: // List<User> collect = initUserList.stream().sorted(Comparator.comparing(User::getAge)).collect(Collectors.toList()); //3 按指定字段對(duì)集合對(duì)象去重處理 // List<User> collect = initUserList.stream().collect(Collectors.collectingAndThen( // Collectors.toCollection(()->new TreeSet<>(Comparator.comparing(User::getName))), ArrayList::new // )); //4 對(duì)集合對(duì)象批量處理 // initUserList.forEach((User user) ->user.setName(user.getName()+"123")); //5 將集合對(duì)象中指定字段轉(zhuǎn)數(shù)組 // String[] strings = initUserList.stream().map(User::getId).toArray(String[]::new); // for (String string : strings) { // System.out.println(string); // } } public static void setOut(List<User> list){ for (User user : list) { System.out.println(user); } } }
結(jié)果截圖1:
結(jié)果截圖2:
結(jié)果截圖3:
結(jié)果截圖4:
結(jié)果截圖5:
到此這篇關(guān)于關(guān)于JAVA中stream流的基礎(chǔ)處理(獲取對(duì)象字段和對(duì)象批量處理等)的文章就介紹到這了,更多相關(guān)JAVA stream流基礎(chǔ)處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot使用RabbitMQ延時(shí)隊(duì)列(小白必備)
這篇文章主要介紹了SpringBoot使用RabbitMQ延時(shí)隊(duì)列(小白必備),詳細(xì)的介紹延遲隊(duì)列的使用場(chǎng)景及其如何使用,需要的小伙伴可以一起來了解一下2019-12-12Java代理模式之靜態(tài)代理與動(dòng)態(tài)代理的區(qū)別及優(yōu)缺點(diǎn)
代理模式是一種常用的設(shè)計(jì)模式,它允許通過引入一個(gè)代理對(duì)象來控制對(duì)目標(biāo)對(duì)象的訪問,在Java中,代理模式被廣泛應(yīng)用,它可以提供額外的功能,如權(quán)限檢查、緩存、日志記錄等,本文將介紹靜態(tài)代理與動(dòng)態(tài)代理的區(qū)別及優(yōu)缺點(diǎn),需要的朋友可以參考下2023-06-06Java線程中synchronized和volatile關(guān)鍵字的區(qū)別詳解
這篇文章主要介紹了Java線程中synchronized和volatile關(guān)鍵字的區(qū)別詳解,synchronzied既能夠保障可見性,又能保證原子性,而volatile只能保證可見性,無法保證原子性,volatile不需要加鎖,比synchronized更輕量級(jí),不會(huì)阻塞線程,需要的朋友可以參考下2024-01-01java實(shí)現(xiàn)坦克大戰(zhàn)小游戲
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)坦克大戰(zhàn)小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-01-01Java自動(dòng)取款機(jī)ATM案例實(shí)現(xiàn)
本文主要介紹了Java自動(dòng)取款機(jī)ATM案例實(shí)現(xiàn),整個(gè)過程可以分為三部分:登錄賬戶和執(zhí)行取款操作,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08