java 8 stream

過濾求和

 BigDecimal totalAmount =carts.stream()
                .filter(s -> (s != null && 
                 ActiveStatus.ACTIVE.getName().equals(s.getActiveStatus().getName())))
                .map(CartExtVo::getTotalAmount)
                .reduce(BigDecimal.ZERO, BigDecimal::add);

轉(zhuǎn)換成map

Map<Long, ItemExtVo> map = itemExtVos.stream().collect(Collectors.toMap(ItemExtVo::getId, extVo -> extVo));

filter

對Stream中的元素進行過濾操作,當設(shè)置條件返回true時返回相應(yīng)元素。

// 獲取權(quán)限類型為目錄的權(quán)限
List<UmsPermission> dirList = permissionList.stream()
    .filter(permission -> permission.getType() == 0)
    .collect(Collectors.toList());

map

對Stream中的元素進行轉(zhuǎn)換處理后獲取。比如可以將UmsPermission對象轉(zhuǎn)換成Long對象。 我們經(jīng)常會有這樣的需求:需要把某些對象的id提取出來,然后根據(jù)這些id去查詢其他對象,這時可以使用此方法。

// 獲取所有權(quán)限的id組成的集合
List<Long> idList = permissionList.stream()
    .map(permission -> permission.getId())
    .collect(Collectors.toList());

limit

從Stream中獲取指定數(shù)量的元素。

// 獲取前5個權(quán)限對象組成的集合
List<UmsPermission> firstFiveList = permissionList.stream()
    .limit(5)
    .collect(Collectors.toList());

count

僅獲取Stream中元素的個數(shù)。

// count操作:獲取所有目錄權(quán)限的個數(shù)
long dirPermissionCount = permissionList.stream()
    .filter(permission -> permission.getType() == 0)
    .count();

sorted

對Stream中元素按指定規(guī)則進行排序。

// 將所有權(quán)限按先目錄后菜單再按鈕的順序排序
List<UmsPermission> sortedList = permissionList.stream()
    .sorted((permission1,permission2)->{return permission1.getType().compareTo(permission2.getType());})
    .collect(Collectors.toList());

skip

跳過指定個數(shù)的Stream中元素,獲取后面的元素。

// 跳過前5個元素,返回后面的
List<UmsPermission> skipList = permissionList.stream()
    .skip(5)
    .collect(Collectors.toList());
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容