Java 8 Stream API了解下
生活随笔
收集整理的這篇文章主要介紹了
Java 8 Stream API了解下
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Stream對象的創建
Stream對象分為兩種,一種串行的流對象,一種并行的流對象。
// permissionList指所有權限列表 // 為集合創建串行流對象 Stream<UmsPermission> stream = permissionList.stream(); // 為集合創建并行流對象 tream<UmsPermission> parallelStream = permissionList.parallelStream();Copy to clipboardErrorCopiedfilter
對Stream中的元素進行過濾操作,當設置條件返回true時返回相應元素。
// 獲取權限類型為目錄的權限 List<UmsPermission> dirList = permissionList.stream().filter(permission -> permission.getType() == 0).collect(Collectors.toList());Copy to clipboardErrorCopiedmap
對Stream中的元素進行轉換處理后獲取。比如可以將UmsPermission對象轉換成Long對象。 我們經常會有這樣的需求:需要把某些對象的id提取出來,然后根據這些id去查詢其他對象,這時可以使用此方法。
// 獲取所有權限的id組成的集合 List<Long> idList = permissionList.stream().map(permission -> permission.getId()).collect(Collectors.toList());Copy to clipboardErrorCopiedlimit
從Stream中獲取指定數量的元素。
// 獲取前5個權限對象組成的集合 List<UmsPermission> firstFiveList = permissionList.stream().limit(5).collect(Collectors.toList());Copy to clipboardErrorCopiedcount
僅獲取Stream中元素的個數。
// count操作:獲取所有目錄權限的個數 long dirPermissionCount = permissionList.stream().filter(permission -> permission.getType() == 0).count();Copy to clipboardErrorCopiedsorted
對Stream中元素按指定規則進行排序。
// 將所有權限按先目錄后菜單再按鈕的順序排序 List<UmsPermission> sortedList = permissionList.stream().sorted((permission1,permission2)->{return permission1.getType().compareTo(permission2.getType());}).collect(Collectors.toList());Copy to clipboardErrorCopiedskip
跳過指定個數的Stream中元素,獲取后面的元素。
// 跳過前5個元素,返回后面的 List<UmsPermission> skipList = permissionList.stream().skip(5).collect(Collectors.toList());Copy to clipboardErrorCopied用collect方法將List轉成map
有時候我們需要反復對List中的對象根據id進行查詢,我們可以先把該List轉換為以id為key的map結構,然后再通過map.get(id)來獲取對象,這樣比較方便。
// 將權限列表以id為key,以權限對象為值轉換成map Map<Long, UmsPermission> permissionMap = permissionList.stream().collect(Collectors.toMap(permission -> permission.getId(), permission -> permission));null值排到最后
List<MaintenanceVO> maintenances = new ArrayList<>(map.values());maintenances.sort(Comparator.nullsLast(Comparator.comparing(MaintenanceVO::getMaintenanceDate, Comparator.nullsLast(Comparable::compareTo))));?
list轉LinkedHashMap
Map<Integer, List<GameRecord>> map = playerList.stream().collect(Collectors.groupingBy(GameRecord::getPokerLevel, LinkedHashMap::new, Collectors.toList()));總結
以上是生活随笔為你收集整理的Java 8 Stream API了解下的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Win系统 - 压缩包part1与par
- 下一篇: 关于JavaStream的一些小练习