java stream 處理


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,以及對象過濾,篩選某個屬性后的成員


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM