java_Stream API

文章目录

  • 一、Stream API vs 集合
  • 二、Stream 使用的执行流程
    • 2.1、创建Stream
    • 2.1、中间操作
      • 2.1.1. filter
      • 2.1.2. limit
      • 2.1.3. skip
      • 2.1.4. distinct
      • 2.1.5. map
      • 2.1.6. sorted

一、Stream API vs 集合

  • Stream API 关注的是多个数据的计算(排序、查找、过滤、映射、遍历等),面向CPU。集合关注的是数据的存储,面向内存。
  • Stream API 之于 集合,类似于 SQL 之于 数据表的查询。

二、Stream 使用的执行流程

  • 1.创建Stream

一个数据源(如:集合、数组),获取一个流

  • 2.中间操作
  • 3.终止操作

2.1、创建Stream

  • 1.通过集合
@Test
public void test(){
    List<Integer> list = Arrays.asList(1,2,3,4,5);
    //JDK1.8中,Collection系列集合增加了方法
    Stream<Integer> stream = list.stream();
}

Java8 中的 Collection 接口被扩展,提供了两个获取流的方法
1.default Stream stream() : 返回一个顺序流 2.default Stream parallelStream() : 返回一个并行流

  • 2.通过数组
@Test
public void test(){
	String[] arr = {"hello","world"};
    Stream<String> stream = Arrays.stream(arr); 

    int[] arr = {1,2,3,4,5};
    IntStream stream = Arrays.stream(arr);
}
  • 3.通过Stream的of()
@Test
public void test04(){
    Stream<Integer> stream = Stream.of(1,2,3,4,5);
}

2.1、中间操作

2.1.1. filter

从流中排除某些元素

	public static void main(String[] args) {
        List<Person> list = new ArrayList<>();
        Person p1 = new Person(1,"xixi");
        Person p2 = new Person(3,"haha");
        list.add(p1);
        list.add(p2);
        list.stream().filter(person -> person.getAge() > 2).forEach(System.out :: println);
    }

2.1.2. limit

使元素不超过指定数量

	public static void main(String[] args) {
        List<Person> list = new ArrayList<>();
        Person p1 = new Person(1,"xixi");
        Person p2 = new Person(3,"haha");
        list.add(p1);
        list.add(p2);
        list.stream().limit(1).forEach(System.out :: println);
    }

在这里插入图片描述

2.1.3. skip

跳过前面n个元素

	public static void main(String[] args) {
        List<Person> list = new ArrayList<>();
        Person p1 = new Person(1,"xixi");
        Person p2 = new Person(3,"haha");
        Person p3 = new Person(5,"yiyi");
        list.add(p1);
        list.add(p2);
        list.add(p3);
        list.stream().skip(2).forEach(System.out :: println);
    }

在这里插入图片描述

2.1.4. distinct

通过流中元素的hashCode()和equals()方法,去除重复元素

2.1.5. map

映射,将元素转换为其他形式或提取信息

	 public static void main(String[] args) {
        List<String> list = Arrays.asList("aa", "bb", "cc");
        /* 1.lmabda表达式 */
        list.stream().map(item -> item.toUpperCase()).forEach(System.out :: println);
        /* 2.方法引用 */
        list.stream().map(String :: toUpperCase).forEach(System.out :: println);
    }

java_Stream API_第1张图片

2.1.6. sorted

排序

你可能感兴趣的:(Java,java,intellij-idea,stream,stream,API)