public class UmsPermission implements Serializable {
private Long id;
@ApiModelProperty(value = "父級權限id")
private Long pid;
@ApiModelProperty(value = "名稱")
private String name;
@ApiModelProperty(value = "權限值")
private String value;
@ApiModelProperty(value = "圖標")
private String icon;
@ApiModelProperty(value = "權限類型:0->目錄;1->菜單;2->按鈕(接口綁定權限)")
private Integer type;
@ApiModelProperty(value = "前端資源路徑")
private String uri;
@ApiModelProperty(value = "啓用狀態;0->禁用;1->啓用")
private Integer status;
@ApiModelProperty(value = "建立時間")
private Date createTime;
@ApiModelProperty(value = "排序")
private Integer sort;
private static final long serialVersionUID = 1L;
//省略全部getter及setter方法
}
複製代碼
//建立list
List<UmsPermission> permissionList = new ArrayList();
// 爲集合建立串行流對象
Stream<UmsPermission> stream = permissionList.stream();
// 爲集合建立並行流對象
Stream<UmsPermission> parallelStream = permissionList.parallelStream();
複製代碼
filter 主要是作篩選用 filte括號裏面結果知足返回true 不知足返回false,返回結果爲return true篩選後的結果前端
// 獲取權限類型爲目錄的權限
// permission 爲permissionList中每個對象
// permission.getType() 獲取type判斷type是否爲1 返回數據爲type=1的對象
List<UmsPermission> dirList = permissionList.stream()
.filter(permission -> permission.getType() == 0)
.collect(Collectors.toList());
// 第二種寫法
List<UmsPermission> dirList = permissionList.stream()
.filter( permission -> {
if (permission.getType() == 0){
return true;
}
return false;
}).collect(Collectors.toList());
複製代碼
map爲獲取map括號裏面return 出來的值java
// 獲取全部權限的id組成的集合
List<Long> idList = permissionList.stream()
.map(permission -> permission.getId())
.collect(Collectors.toList());
//第二種寫法
List<Integer> list = permissionList.stream()
.map(permission -> {
return permission.getId();
}).collect(Collectors.toList());
複製代碼
從Stream中獲取指定數量的元素。markdown
// 獲取前3個權限對象組成的集合
List<UmsPermission> firstFiveList = permissionList.stream()
.limit(3)
.collect(Collectors.toList());
複製代碼
// 跳過前5個元素,返回後面的
List<UmsPermission> skipList = permissionList.stream()
.skip(5)
.collect(Collectors.toList());
複製代碼
// count操做:獲取全部目錄權限的個數
long dirPermissionCount = permissionList.stream()
.filter(permission -> permission.getType() == 0)
.count();
複製代碼
sorted 排序 括號中返回的爲 -1 0 1spa
// 將全部權限按先目錄後菜單再按鈕的順序排序
//默認正序
List<UmsPermission> sortedList = permissionList.stream()
.sorted(Comparator.comparing(UmsPermission::getType)).collect(Collectors.toList());
//倒序 reversed
List<UmsPermission> sortedList = permissionList.stream()
.sorted(Comparator.comparing(UmsPermission::getType).reversed()).collect(Collectors.toList());
//第二種寫法 正序
List<UmsPermission> sortedList = permissionList.stream()
//permission1 下一個元素的值 permission2 當前元素的值
.sorted((permission1,permission2)->{
//compareTo對比方法介紹
//permission1.getType() 小於 permission2.getType() 返回 -1 正序
//permission1.getType() 等於 permission2.getType() 返回 0 不排序
//permission1.getType() 大於 permission2.getType() 返回 1 倒序
return permission1.getType().compareTo(permission2.getType());})
.collect(Collectors.toList());
複製代碼
// 對象轉Map<Long,UmsPermission> 類型 key:id ,value:對象
Map<Long, UmsPermission> permissionMap = permissionList.stream()
.collect(Collectors.toMap(permission -> permission.getId(), permission -> permission ));
// map中key重複用這個加(oldValue, newValue) -> newValue 的方法
Map<Long, UmsPermission> permissionMap = permissionList.stream()
.collect(Collectors
//(oldValue, newValue) -> newValue 的做用是當出現同樣的key值得時候如何取捨其中oldValue表明已存在map中的值,newValue表明新值(當前值),示例中取舊值(toMap key重複會報錯) 當前取值爲newValue(當前value覆蓋原來map中的值)
.toMap(permission -> permission.getId(), permission -> permission ,(oldValue,newValue)-> newValue));
//轉換爲List<Map<String,Object>>
List<Map<String,Object>> collect = permissionList.stream()
.map(permission -> new BeanMap(permission))
.collect(Collectors.toList());
//轉換爲Set<Map<String,Object>>
Set<Map<String,Object>> collect = permissionList.stream()
.map(permission -> new BeanMap(permission))
.collect(Collectors.toSet());
複製代碼