切換語言為:簡體
Java專案中無需遍歷快速獲取List物件列表某個屬性去重後的值集合

Java專案中無需遍歷快速獲取List物件列表某個屬性去重後的值集合

  • 爱糖宝
  • 2024-11-02
  • 2036
  • 0
  • 0

    我再詳細敘述下我的問題:

我是SpringBoot專案,在資料庫中查詢的物件列表為:List<TbProductEntity>,TbProductEntity中有個String屬性categoryName,最終想要獲取List<String>categoryNames,categoryNames為屬性列表物件中所有資料的categoryName屬性去重後的值。舉例:比如TbProductEntity是商品表,categoryName是型號,總共有:small,middle以及big三個型號,List<TbProductEntity>為一次性獲取的資料,比如有6條資料,這些資料中可能包含2條small型號,4條big型號,那最終我想要的結果List<String>categoryNames值就是small和big

    如果按照常規方法就需要先遍歷,然後將查詢出的categoryName屬性全部放入Set集合中,不難但是挺麻煩的。今天教大家一種新方法,可以使用Java 8的Stream API來簡化獲取過程。使用Stream可以直接提取出p屬性值並去重,避免手動遍歷。具體操作步驟如下:

import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
public class ProductEntityService {
    public Set<String> getUniquePValues(List<TbProductEntity> productList) {
        return productList.stream()
                .map(TbProductEntity::getCategoryName) // 提取Person物件的p屬性值
                .collect(Collectors.toSet()); // 去重並收集到Set中
    }
}

程式碼詳解

     1. productList.stream():將List<TbProductEntity>轉換為流,以便進行流操作。

     2. .map(TbProductEntity::getCategoryName):使用map提取每個TbProductEntity物件的categoryName屬性。

     3. .collect(Collectors.toSet()):將提取的p屬性值收集到Set中,自動去重,獲得唯一的p值集合。

這樣就可以一次性得到List<Person>中所有不同的p值,無需手動遍歷。

0則評論

您的電子郵件等資訊不會被公開,以下所有項目均必填

OK! You can skip this field.