過濾求和
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());