最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java8 使用流抽取List<T>集合中T的某個(gè)屬性操作

 更新時(shí)間:2021年02月04日 14:23:19   作者:qq_38524629  
這篇文章主要介紹了Java8 使用流抽取List<T>集合中T的某個(gè)屬性操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

在java開發(fā)中,我們經(jīng)常會(huì)遇到需要從一個(gè)集合中,抽取集合中元素的某一個(gè)屬性。在java8之前,我們通常采用for循環(huán)去獲取,但java8之后我們有了一種新的辦法,那就是stream。

話不多說,直接上代碼

import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
 * @author lanfangyi
 * @version 1.0
 * @since 2019/5/12 13:22
 */
@Data
@AllArgsConstructor
public class User {
  private Long id;
  private String name;
}
class TestMainService {
  public static void main(String[] args) {
    List<User> userList = new ArrayList<>();
    User user = new User(1L, "zhangsan");
    User user1 = new User(2L, "lisi");
    userList.add(user);
    userList.add(user1);
    List<Long> userIds = new ArrayList<>();
    //第一種方式
    userList.forEach(user2 -> {
      userIds.add(user2.getId());
      //這里可以進(jìn)行更多的操作
    });
    System.out.println(userIds);
    //第二種方式
    List<Long> userIds2 = userList.stream().map(User::getId).collect(Collectors.toList());
    System.out.println(userIds2);
  }
}

打印結(jié)果:

[1, 2]
[1, 2]

補(bǔ)充:Java根據(jù)類屬性值從一個(gè)集合中找到和該屬性相等的對(duì)象

方法

使用common-utils包提供的CollectionUtils和BeanPropertyValueEqualsPredicate

比如找id屬性值為9587的用戶

Object obj = CollectionUtils.find(UserList.get(), 
new BeanPropertyValueEqualsPredicate("id", "9587"));
if(obj == null){
  log.info("not found");
}else{
  //do your thing
}

find方法實(shí)現(xiàn)的大概思路

public static <T> T findElementByPropertyValue(List<T> list, String propertyName, Object value) throws Exception {
  if(list == null || list.isEmpty()) {
    return null;
  }
  PropertyDescriptor pd = new PropertyDescriptor(propertyName, list.get(0).getClass());
  for (T t : list) {
    Object obj = pd.getReadMethod().invoke(t);
    if(StringUtils.equals(String.valueOf(value), String.valueOf(obj))) {
      return t;
    }
  }
  return null;
}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • 深入理解JSON及其在Java中的應(yīng)用小結(jié)

    深入理解JSON及其在Java中的應(yīng)用小結(jié)

    json它是一種輕量級(jí)的數(shù)據(jù)交換格式,由于其易于閱讀和編寫,同時(shí)也易于機(jī)器解析和生成,因此廣泛應(yīng)用于網(wǎng)絡(luò)數(shù)據(jù)交換和配置文件,這篇文章主要介紹了深入理解JSON及其在Java中的應(yīng)用,需要的朋友可以參考下
    2023-12-12
  • SpringBoot教程_創(chuàng)建第一個(gè)SpringBoot項(xiàng)目

    SpringBoot教程_創(chuàng)建第一個(gè)SpringBoot項(xiàng)目

    這篇文章主要介紹了SpringBoot教程_創(chuàng)建第一個(gè)SpringBoot項(xiàng)目,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • SocketIo+SpringMvc實(shí)現(xiàn)文件的上傳下載功能

    SocketIo+SpringMvc實(shí)現(xiàn)文件的上傳下載功能

    這篇文章主要介紹了SocketIo+SpringMvc實(shí)現(xiàn)文件的上傳下載功能,socketIo不僅可以用來做聊天工具,也可以實(shí)現(xiàn)局域網(wǎng)。文中給出了實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2018-08-08
  • Java11新特性之HttpClient小試牛刀

    Java11新特性之HttpClient小試牛刀

    本文主要研究一下Java11的HttpClient的基本使用。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-09-09
  • 在Spring Boot中淺嘗內(nèi)存泄漏的實(shí)戰(zhàn)記錄

    在Spring Boot中淺嘗內(nèi)存泄漏的實(shí)戰(zhàn)記錄

    本文給大家分享在Spring Boot中淺嘗內(nèi)存泄漏的實(shí)戰(zhàn)記錄,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2025-04-04
  • Javaweb實(shí)現(xiàn)完整個(gè)人博客系統(tǒng)流程

    Javaweb實(shí)現(xiàn)完整個(gè)人博客系統(tǒng)流程

    這篇文章主要介紹了怎樣用Java來實(shí)現(xiàn)一個(gè)完整的個(gè)人博客系統(tǒng),我們通過實(shí)操上手的方式可以高效的鞏固所學(xué)的基礎(chǔ)知識(shí),感興趣的朋友一起來看看吧
    2022-03-03
  • java數(shù)據(jù)結(jié)構(gòu)與算法之簡(jiǎn)單選擇排序詳解

    java數(shù)據(jù)結(jié)構(gòu)與算法之簡(jiǎn)單選擇排序詳解

    這篇文章主要介紹了java數(shù)據(jù)結(jié)構(gòu)與算法之簡(jiǎn)單選擇排序,結(jié)合實(shí)例形式分析了選擇排序的原理、實(shí)現(xiàn)方法與相關(guān)操作技巧,需要的朋友可以參考下
    2017-05-05
  • Springboot RocketMq實(shí)現(xiàn)過程詳解

    Springboot RocketMq實(shí)現(xiàn)過程詳解

    這篇文章主要介紹了Springboot RocketMq實(shí)現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • IntelliJ IDEA設(shè)置代碼的快捷編輯模板Live Templates

    IntelliJ IDEA設(shè)置代碼的快捷編輯模板Live Templates

    今天小編就為大家分享一篇關(guān)于IntelliJ IDEA設(shè)置代碼的快捷編輯模板Live Templates,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • SpringBoot引入SPEL模板字符串替換的兩種方式

    SpringBoot引入SPEL模板字符串替換的兩種方式

    在 Spring Boot 中,我們可以使用字符串替換工具類來實(shí)現(xiàn)這些功能,本文主要介紹了SpringBoot引入SPEL模板字符串替換的兩種方式,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03

最新評(píng)論

泸定县| 白城市| 静乐县| 临西县| 长海县| 剑河县| 宜阳县| 特克斯县| 武川县| 安国市| 五华县| 彰武县| 道孚县| 鄂伦春自治旗| 洪洞县| 上杭县| 木里| 邵武市| 蒙自县| 乐都县| 温泉县| 和硕县| 博乐市| 铜梁县| 峨眉山市| 崇文区| 深泽县| 邵阳市| 牙克石市| 通城县| 玉环县| 桦川县| 勐海县| 漳平市| 吴桥县| 赫章县| 寿阳县| 潢川县| 加查县| 衡水市| 七台河市|