集合对象.stream() 获取流对象,对元素批处理(不改变原集合)

集合元素循环除了用for循环取出,还有更优雅的方式.forEach

示例List集合获取Stream对象进行元素批处理

import java.util.ArrayList;
import java.util.List; /**
* @ClassName ArrayListStreamExample
* @projectName: object1
* @author: Zhangmingda
* @description: XXX
* date: 2021/4/11.
*/
public class ArrayListStreamExample {
public static void main(String[] args) {
List<String> persons = new ArrayList<>();
persons.add("李一桐");
persons.add("刘亦菲");
persons.add("鞠婧祎");
persons.add("李易峰");
persons.add("李纯");
persons.add("李小璐");
persons.add("李健");
persons.add("李连杰");
//
persons.stream().filter(o -> o.startsWith("李")).filter(o -> o.length() >=3).forEach(System.out::println);
List<String> liPerson = new ArrayList<>();
persons.stream().filter(o -> o.startsWith("李")).filter(o -> o.length() >=3).forEach(o -> liPerson.add(o));
System.out.println(liPerson); // [李一桐, 李易峰, 李小璐, 李连杰]
}
}

常用方法:

Map映射

如果需要将流中的元素映射到另一个流中,可以使用 map 方法。
<R> Stream<R> map(Function<? super T, ? extends R> mapper)
Function是一个函数式接口,他有一个R apply(T t);方法,可以把T对象转化成R对象。这个就叫做映射。
  • 统计个数Count
  • 获取前几个Limit
  • 跳过前几个Skip
  • 组合concat
  • 最大最小值
    常用方法示例代码:
    import java.util.stream.Stream;
    
    /**
    * @ClassName StreamFuncExample
    * @projectName: object1
    * @author: Zhangmingda
    * @description: XXX
    * date: 2021/4/12.
    */
    public class StreamFuncExample {
    public static void main(String[] args) {
    Stream.of(1,2,3).map(num ->num *2).forEach(System.out::println); //映射输出2、4、6
    long count = Stream.of(1,3,4,5).count(); //统计个数
    System.out.println(count);
    Stream.of(1,2,3,4,5,6).limit(3).forEach(System.out::println);//前三个
    Stream.of(1,2,3,4,5,6).skip(3).forEach(System.out::println);//跳过前三个
    Stream<Integer> num = Stream.of(1,2,3);
    Stream<String> person = Stream.of("张三","李四","王五");
    Stream allStream = Stream.concat(num,person);
    allStream.forEach(System.out::println); //1,2,3, 张三","李四","王五"
    int max = Stream.of(1,2,3,4,5,6).max((num1, num2) -> num1 - num2).get(); //取最大
    System.out.println(max); //6
    }
    }
 

Stream对象转换为集合

collect(Collectors.toList())  

collect(Collectors.toSet())

collect(Collectors.toMap())

public class StreamCollectCollectorsXXX {
public static void main(String[] args) {
Stream<String> persons = Stream.of("张三","李四","王五");
// List<String> personList = persons.collect(Collectors.toList());
// Set<String> personSet = persons.collect(Collectors.toSet());
Map<String,Integer> personMap = persons.collect(Collectors.toMap( K ->K, K ->K.length()));
System.out.println(personMap);
}
}

最新文章

  1. LINQ to SQL语句(19)之ADO.NET与LINQ to SQL
  2. jquery 中的 offset()
  3. Laravel错误与日志处理
  4. 图解 &amp; 深入浅出 JavaWeb:Servlet必会必知
  5. WPF总结
  6. Java版本-----商店购物系统
  7. SqlAlchemy初探
  8. odoo view field option, action flage 参数
  9. datazen 备份还原
  10. neural style论文解读
  11. mysql 查询表的行数和空间使用及其它信息
  12. Setup SSH and SVN on Windows Server
  13. 我有DIY一Android遥控-所有开源
  14. windows(64位)下用vagrant+virtualbox 管理虚拟机具体解释
  15. 解决MySQL在修改列时因为外键依赖出错的问题
  16. shell反射
  17. spring batch批量处理框架
  18. IE浏览器强制不是要兼容视图
  19. UICollectionView设置首个cell默认选中
  20. Replace和ReplaceAll的差别

热门文章

  1. windows defender antivirus占用内存解决教程
  2. SPOJ 1557 GSS2 - Can you answer these queries II (线段树+维护历史最值)
  3. DirectX12 3D 游戏开发与实战第七章内容(下)
  4. Excel-判断一个文本字符串中是否包含数字! 判断一个文本字符串是否是纯汉字!
  5. 自动化测试系列(二)|API测试
  6. LeetCode:旋转图像
  7. day01 前端bootstrap框架
  8. 【Reverse】每日必逆0x03
  9. 设计和实现OLAP解决方案 [转]
  10. vue项目windows环境初始化