我再詳細敘述下我的問題:
我是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值,無需手動遍歷。