關(guān)于JAVA中stream流的基礎(chǔ)處理(獲取對象字段和對象批量處理等)
Stream流程處理情況
1:按指定字段獲取集合對象中的字段:
List<String> idList = initUserList.stream().map(User::getId).collect(Collectors.toList());
2:按指定字段對集合對象進行排序:
List<User> collect = initUserList.stream().sorted(Comparator.comparing(User::getAge)).collect(Collectors.toList());
3: 按指定字段對集合對象去重處理
List<User> collect = initUserList.stream().collect(Collectors.collectingAndThen( Collectors.toCollection(()->new TreeSet<>(Comparator.comparing(User::getName))), ArrayList::new));
4: 對集合對象批量處理
initUserList.forEach((User user) ->user.setName(user.getName()+"123"));
5: 將集合對象中指定字段轉(zhuǎn)數(shù)組
String[] strings = initUserList.stream().map(User::getId).toArray(String[]::new);
完整代碼如下:
對象類:
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按指定字段獲取集合對象中的字段
// List<String> idList = initUserList.stream().map(User::getId).collect(Collectors.toList());
//2 按指定字段對集合對象進行排序:
// List<User> collect = initUserList.stream().sorted(Comparator.comparing(User::getAge)).collect(Collectors.toList());
//3 按指定字段對集合對象去重處理
// List<User> collect = initUserList.stream().collect(Collectors.collectingAndThen(
// Collectors.toCollection(()->new TreeSet<>(Comparator.comparing(User::getName))), ArrayList::new
// ));
//4 對集合對象批量處理
// initUserList.forEach((User user) ->user.setName(user.getName()+"123"));
//5 將集合對象中指定字段轉(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ǔ)處理(獲取對象字段和對象批量處理等)的文章就介紹到這了,更多相關(guān)JAVA stream流基礎(chǔ)處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot使用RabbitMQ延時隊列(小白必備)
這篇文章主要介紹了SpringBoot使用RabbitMQ延時隊列(小白必備),詳細(xì)的介紹延遲隊列的使用場景及其如何使用,需要的小伙伴可以一起來了解一下2019-12-12
Java代理模式之靜態(tài)代理與動態(tài)代理的區(qū)別及優(yōu)缺點
代理模式是一種常用的設(shè)計模式,它允許通過引入一個代理對象來控制對目標(biāo)對象的訪問,在Java中,代理模式被廣泛應(yīng)用,它可以提供額外的功能,如權(quán)限檢查、緩存、日志記錄等,本文將介紹靜態(tài)代理與動態(tài)代理的區(qū)別及優(yōu)缺點,需要的朋友可以參考下2023-06-06
Java線程中synchronized和volatile關(guān)鍵字的區(qū)別詳解
這篇文章主要介紹了Java線程中synchronized和volatile關(guān)鍵字的區(qū)別詳解,synchronzied既能夠保障可見性,又能保證原子性,而volatile只能保證可見性,無法保證原子性,volatile不需要加鎖,比synchronized更輕量級,不會阻塞線程,需要的朋友可以參考下2024-01-01

