首页 > 编程语言 >【java技术总结】Stream流基础使用

【java技术总结】Stream流基础使用

时间:2023-01-19 21:47:11浏览次数:49  
标签:总结 map java Stream stream 流中 list collect

Stream流使用

1.获取Stream流

对于四种数据分别采取不同的获取方式

获取方式 方法名 说明
单列集合 default Stream stream() Collection中的默认方法
双列集合 无法直接使用Stream流
数组 public static Stream stream(T[] array) Arrays工具类中的静态方法
一堆零散数据 public static Stream of(T …values) Stream接口中的静态方法

1.1单列集合获取

List<String> list = new ArrayList<>();
Collections.addAll(list,"a","b","c");
Stream<String> stream1 = list.stream();

1.2双列集合获取

Map<String,String> map = new HashMap<>();
map.put("aaa",111);
map.put("bbb",222);
map.put("ccc",333);

Stream<String> stream1 = map.keySet().stream();
Stream<String> stream2 = map.entrySet().stream();

1.3数组获取

int[] arr1 = {1,2,3,4,5,6,7,8,9};
String[] arr2 = {"a","b","c"};

Stream<Integer> stream1 = Arrays.stream(arr1);
Stream<Integer> stream2 = Arrays.stream(arr2);

1.4零散数据

Stream<Integer> stream1 = Stream.of(1,2,3,4);
Stream<String> stream2 = Stream.of("a","b","c","d");

2.Stream流的中间方法

名称 说明
Streamfilter(Predicate<? super T> predicate) 过滤
Streamlimit(long maxSize) 获取前几个元素
Stream skip(long n) 跳过前几个元素
Stream distinct() 元素去重,依赖(hashCode和equals方法)
static Stream concat(Stream a,Stream b) 合并a和b两个流为一个流
Stream map(Function<T,R> mapper) 转换流中的数据类型
List<String> list = new ArrayList<String>();
Collections.addAll(list,"张三丰","周芷若","赵明");

2.1filter

list.stream().filter(s -> s.startsWith("张"));

2.2limit

list.stream().limit(3);

2.3skip

list.stream().skip(4);

2.4distinct

list.stream().distinct();

2.5concat

Stream.concat(list1.stream(),list2.stream());

2.6map

List<String> list = new ArrayList<>();
Collections.addAll(list,"张无忌-15","周芷若-56","赵敏-52","张三丰-100");

list.stream().map(s -> Integer.parseInt(s.split("-")[1]));

3.Stream流的终结方法

名称 说明
void forEach(Consumer action) 遍历
long count() 统计
toArray() 收集流中的数据,放到数组中
collect(Collector collector) 收集流中的数据,放到集合中
List<String> list = new ArrayList<String>();
Collections.addAll(list,"张三丰","周芷若","赵明");

3.1forEach遍历

list.stream().forEach(s -> System.out.println(s));

3.2count统计

long count = list.stream().count();

3.3toArray()收集流中数据,放到数组中

String[] arr = list.stream().toArray(value -> new String[value]);

3.4collect(Collector collector)

  1. 收集流中数据,放到List集合中
List<String> newList = list.stream().collect(Collectors.toList());
  1. 收集流中数据,放到Set集合中
Set<String> set = list.stream()
    .filter(s -> "男".equals(s.split("-")[1]))
    .collect(Collectors.toSet());

3.收集流中数据,放到Set集合中

Map<String, String> collect = list.stream().filter(s -> "男".equals(s.split("-")[1]))
    .collect(Collectors.toMap(s -> s.split("-")[0], s -> s.split("-")[2]));

标签:总结,map,java,Stream,stream,流中,list,collect
From: https://www.cnblogs.com/blanset/p/17062190.html

相关文章

  • SpringCloud Stream消息驱动
    简单搭建,没有技术含量,Demo可用1、介绍①产生原因RabbitMQ、RocketMQ、Kafka、ActiveMQ在一个项目中,可能存在多种不同的MQ,在不同的MQ中,切换维护开发都很麻烦。如果你......
  • Mockito Java 测试框架
    Mockito是一个针对Java的mocking框架。它与EasyMock和jMock很相似,但是通过在执行后校验什么已经被调用,它消除了对期望行为(expectations)的需要。其它的mocking库......
  • java10-20K
    ......
  • 注意点总结01
    1.导航栏中的链接问题2.表单元素是行内块,有间隙,用浮动清除3. 用于应对:例如,一共5个小模块,4个小模块都需要左边距,设置左边距之后,父盒子的宽度不够,第五个小模块掉下去。......
  • JavaWeb-会话技术
    JavaWeb-会话技术1,会话跟踪技术的概述对于会话跟踪这四个词,我们需要拆开来进行解释,首先要理解什么是会话,然后再去理解什么是会话跟踪:会话:用户打开浏览器,访问web服务......
  • Java模拟用户登录
    publicstaticvoidmain(String[]args){//1.告诉了已知的用户名和密码Stringname="zhangan";Stringpassword="12345";Scannersc=newScanner(......
  • 这是一份来自联想Filez的2022年终总结报告!请注意查收
    ......
  • 【Java】try...catch...finally执行顺序
    结论:如果try中没有异常,则顺序为try→finally;如果try中有异常,顺序为try→catch→finally,并且异常之后的代码不会执行。当try或catch中带有return时,会先执行return前的代......
  • 调用fragment中的onActivityResult时发生java.lang.IndexOutOfBoundsException问题,请
    调用fragment中的onActivityResult时概率发生java.lang.IndexOutOfBoundsException问题,请问下什么原因?StartScanCodeFragment中代码:overridefunonActivityResult(reques......
  • JavaWeb-JSP
    JavaWeb-JSP1,JSP概述JSP(全称:JavaServerPages):Java服务端页面。是一种动态的网页技术,其中既可以定义HTML、JS、CSS等静态内容,还可以定义Java代码的动态内容,也就是JS......