List<Long> projectIds = projectRestDTOS.stream().map(ProjectRestDTO::getProjectId).collect(
Collectors.toList());
List<String> uniqueKeys = controlList.stream().map(r -> r.getUniqueKey()).
distinct().collect(Collectors.toList());
public List<SiteDTO> querySiteList(List<Long> siteIds) { if (CollectionUtils.isEmpty(siteIds)) { return Lists.newArrayList(); } Long firstNonNullSiteId = siteIds.stream() .filter(Objects::nonNull) .findFirst() .orElse(null); Long tenantId = SalUtils.calcTenantId(firstNonNullSiteId); ResultData<List<SiteDTO>> result = siteService.findSitesDetail(siteIds, tenantId); return SalUtils.unboxResult(result); }
根據類轉換成:map:
import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import org.junit.Test; /** * Created by Jackielee on 2017 * @author: lizhilong * @date: 2017-11-24 10:13:57 * @Copyright: 2017 www.aliyun.com Inc. All rights reserved. */ public class DemoListToMap { List<Student> list = Arrays.asList(new Student(1, 18, "阿龍", GenderColumn.BOY.getCode()), new Student(2, 17, "小花", GenderColumn.GIRL.getCode()), new Student(3, 17, "阿浪", GenderColumn.LADYBOY.getCode())); @Test public void listToMapByObjectValue(){ // value 為對象 student -> student jdk1.8返回當前對象 Map<Integer, Student> map = list.stream().collect(Collectors.toMap(Student::getId, student -> student)); // 遍歷打印結果 map.forEach((key, value) -> { System.out.println("key: " + key + " value: " + value); }); } @Test public void listToMapByNameValue(){ // value 為對象中的屬性 Map<Integer, String> map = list.stream().collect(Collectors.toMap(Student::getId, Student::getName)); map.forEach((key, value) -> { System.out.println("key: " + key + " value: " + value); }); }
java 8 list的stream操作 list中的對象中的某一個成員取出轉為該成員的list,以及對象過濾,篩選某個屬性后的成員
取成員屬性list
List<String> configList = codeEntityList.stream().map(t -> t.getName()).distinct().collect(Collectors.toList());
對象的過濾
list.stream().filter(body-> body.getId().equals(entity1.getId())).findAny().get();
//跟據某個屬性分組
Map<String, List<PersonData>> collect = list.stream().collect(Collectors.groupingBy(PersonData::getType));
//根據某個屬性分組,匯總某個屬性
Map<String, Integer> collect2 = list.stream().collect(Collectors.groupingBy(PersonData::getType,Collectors.summingInt(PersonData::getAge)));
//根據某個屬性添加條件過濾數據,
list = list.stream().filter(u -> !u.getType().equals("訪客")).collect(Collectors.toList());
//判斷一組對象里面有沒有屬性值是某個值
boolean add = list.stream().anyMatch(m -> "王五".equals(m.getName()));
//取出一組對象的某個屬性組成一個新集合
List<String> names=list.stream().map(PersonData::getName).collect(Collectors.toList());
List<類> list; 代表某集合 //返回 對象集合以類屬性一升序排序 list.stream().sorted(Comparator.comparing(類::屬性一)); //返回 對象集合以類屬性一降序排序 注意兩種寫法 list.stream().sorted(Comparator.comparing(類::屬性一).reversed());//先以屬性一升序,結果進行屬性一降序 list.stream().sorted(Comparator.comparing(類::屬性一,Comparator.reverseOrder()));//以屬性一降序 //返回 對象集合以類屬性一升序 屬性二升序 list.stream().sorted(Comparator.comparing(類::屬性一).thenComparing(類::屬性二)); //返回 對象集合以類屬性一降序 屬性二升序 注意兩種寫法 list.stream().sorted(Comparator.comparing(類::屬性一).reversed().thenComparing(類::屬性二));//先以屬性一升序,升序結果進行屬性一降序,再進行屬性二升序 list.stream().sorted(Comparator.comparing(類::屬性一,Comparator.reverseOrder()).thenComparing(類::屬性二));//先以屬性一降序,再進行屬性二升序 //返回 對象集合以類屬性一降序 屬性二降序 注意兩種寫法 list.stream().sorted(Comparator.comparing(類::屬性一).reversed().thenComparing(類::屬性二,Comparator.reverseOrder()));//先以屬性一升序,升序結果進行屬性一降序,再進行屬性二降序 list.stream().sorted(Comparator.comparing(類::屬性一,Comparator.reverseOrder()).thenComparing(類::屬性二,Comparator.reverseOrder()));//先以屬性一降序,再進行屬性二降序 //返回 對象集合以類屬性一升序 屬性二降序 注意兩種寫法 list.stream().sorted(Comparator.comparing(類::屬性一).reversed().thenComparing(類::屬性二).reversed());//先以屬性一升序,升序結果進行屬性一降序,再進行屬性二升序,結果進行屬性一降序屬性二降序 list.stream().sorted(Comparator.comparing(類::屬性一).thenComparing(類::屬性二,Comparator.reverseOrder()));//先以屬性一升序,再進行屬性二降序<br><br><br>
參考:java 8 list的stream操作 list中的對象中的某一個成員取出轉為該成員的list,以及對象過濾,篩選某個屬性后的成員