编程知识 cdmana.com

java8 Stream API及常用方法,java初级程序员面试

//创建list

List permissionList = new ArrayList();

// 为集合创建串行流对象

Stream stream = permissionList.stream();

// 为集合创建并行流对象

Stream parallelStream = permissionList.parallelStream();

filter 过滤


filter 主要是做筛选用 filte括号里面结果满足返回true 不满足返回false,返回结果为return true筛选后的结果

// 获取权限类型为目录的权限

// permission 为permissionList中每一个对象

// permission.getType() 获取type判断type是否为1 返回数据为type=1的对象

List dirList = permissionList.stream()

.filter(permission -> permission.getType() == 0)

.collect(Collectors.toList());

// 第二种写法

List dirList = permissionList.stream()

.filter( permission -> {

if (permission.getType() == 0){

return true;

}

return false;

}).collect(Colle

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

ctors.toList());

map筛选


map为获取map括号里面return 出来的值

// 获取所有权限的id组成的集合

List idList = permissionList.stream()

.map(permission -> permission.getId())

.collect(Collectors.toList());

//第二种写法

List list = permissionList.stream()

.map(permission -> {

return permission.getId();

}).collect(Collectors.toList());

list获取指定数量元素


从Stream中获取指定数量的元素。

// 获取前3个权限对象组成的集合

List firstFiveList = permissionList.stream()

.limit(3)

.collect(Collectors.toList());

skip跳过指定下标


// 跳过前5个元素,返回后面的

List skipList = permissionList.stream()

.skip(5)

.collect(Collectors.toList());

count获取总数


// count操作:获取所有目录权限的个数

long dirPermissionCount = permissionList.stream()

.filter(permission -> permission.getType() == 0)

.count();

sorted排序


sorted 排序 括号中返回的为 -1 0 1

// 将所有权限按先目录后菜单再按钮的顺序排序

//默认正序

List sortedList = permissionList.stream()

.sorted(Comparator.comparing(UmsPermission::getType)).collect(Collectors.toList());

//倒序 reversed

List sortedList = permissionList.stream()

.sorted(Comparator.comparing(UmsPermission::getType).reversed()).collect(Collectors.toList());

//第二种写法 正序

List 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());

controller方法


// 对象转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());

版权声明
本文为[Alibaba_开源]所创,转载请带上原文链接,感谢
https://blog.csdn.net/m0_63174811/article/details/121542283

Scroll to Top