Java 8 Stream API了解下
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                Java 8 Stream API了解下
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.                        
                                Stream對(duì)象的創(chuàng)建
Stream對(duì)象分為兩種,一種串行的流對(duì)象,一種并行的流對(duì)象。
// permissionList指所有權(quán)限列表 // 為集合創(chuàng)建串行流對(duì)象 Stream<UmsPermission> stream = permissionList.stream(); // 為集合創(chuàng)建并行流對(duì)象 tream<UmsPermission> parallelStream = permissionList.parallelStream();Copy to clipboardErrorCopiedfilter
對(duì)Stream中的元素進(jìn)行過濾操作,當(dāng)設(shè)置條件返回true時(shí)返回相應(yīng)元素。
// 獲取權(quán)限類型為目錄的權(quán)限 List<UmsPermission> dirList = permissionList.stream().filter(permission -> permission.getType() == 0).collect(Collectors.toList());Copy to clipboardErrorCopiedmap
對(duì)Stream中的元素進(jìn)行轉(zhuǎn)換處理后獲取。比如可以將UmsPermission對(duì)象轉(zhuǎn)換成Long對(duì)象。 我們經(jīng)常會(huì)有這樣的需求:需要把某些對(duì)象的id提取出來,然后根據(jù)這些id去查詢其他對(duì)象,這時(shí)可以使用此方法。
// 獲取所有權(quán)限的id組成的集合 List<Long> idList = permissionList.stream().map(permission -> permission.getId()).collect(Collectors.toList());Copy to clipboardErrorCopiedlimit
從Stream中獲取指定數(shù)量的元素。
// 獲取前5個(gè)權(quán)限對(duì)象組成的集合 List<UmsPermission> firstFiveList = permissionList.stream().limit(5).collect(Collectors.toList());Copy to clipboardErrorCopiedcount
僅獲取Stream中元素的個(gè)數(shù)。
// count操作:獲取所有目錄權(quán)限的個(gè)數(shù) long dirPermissionCount = permissionList.stream().filter(permission -> permission.getType() == 0).count();Copy to clipboardErrorCopiedsorted
對(duì)Stream中元素按指定規(guī)則進(jìn)行排序。
// 將所有權(quán)限按先目錄后菜單再按鈕的順序排序 List<UmsPermission> sortedList = permissionList.stream().sorted((permission1,permission2)->{return permission1.getType().compareTo(permission2.getType());}).collect(Collectors.toList());Copy to clipboardErrorCopiedskip
跳過指定個(gè)數(shù)的Stream中元素,獲取后面的元素。
// 跳過前5個(gè)元素,返回后面的 List<UmsPermission> skipList = permissionList.stream().skip(5).collect(Collectors.toList());Copy to clipboardErrorCopied用collect方法將List轉(zhuǎn)成map
有時(shí)候我們需要反復(fù)對(duì)List中的對(duì)象根據(jù)id進(jìn)行查詢,我們可以先把該List轉(zhuǎn)換為以id為key的map結(jié)構(gòu),然后再通過map.get(id)來獲取對(duì)象,這樣比較方便。
// 將權(quán)限列表以id為key,以權(quán)限對(duì)象為值轉(zhuǎn)換成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轉(zhuǎn)LinkedHashMap
Map<Integer, List<GameRecord>> map = playerList.stream().collect(Collectors.groupingBy(GameRecord::getPokerLevel, LinkedHashMap::new, Collectors.toList()));總結(jié)
以上是生活随笔為你收集整理的Java 8 Stream API了解下的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: Win系统 - 压缩包part1与par
 - 下一篇: Python应用:矩阵的乘法—乘积 点