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());
复制代码