Java——Stream流(1/2):Stream流入门、Stream流的创建(认识Stream、体验Stream流、Stream流的使用步骤、获取Stream流的方法)

简介: Java——Stream流(1/2):Stream流入门、Stream流的创建(认识Stream、体验Stream流、Stream流的使用步骤、获取Stream流的方法)

认识Stream

什么是Steam

  • 也叫Stream流,是JDK8开始新增的一套API ( java.util.stream.*),可以用于操作集合或者数组的数据。
  • 优势:Stream流大量的结合了Lambda的语法风格来编程,提供了一种更加强大,更加简单的方式操作集合或者数组中的数据,代码更简洁,可读性更好。

体验Stream流

需求

List<String> list = new ArrayList<>();
list.add("张无忌");
list.add("周芷若");
list.add("赵敏");
list.add("张强");
list.add("张三丰");
  • 把集合中所有以“张”开头,且是3个字的元素存储到一个新的集合。

使用ListAPI

public class streamTest1 {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>();
        Collections.addAll(names,"张三丰","张无忌","周芷若","赵敏","张强");
        System.out.println(names);
        System.out.println("------------------");
        //找出姓张、且是3个字的名字,存入到一个新集合中去
        List<String> list = new ArrayList<>();
        for(String name:names){
            if(name.startsWith("张") && name.length() == 3){
                list.add(name);
            }
        }
        System.out.println(list);
    }
}

运行结果:


使用Stream流

package Stream;
 
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
 
public class streamTest1 {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>();
        Collections.addAll(names,"张三丰","张无忌","周芷若","赵敏","张强");
        System.out.println(names);
        System.out.println("------------------");
 
        //找出姓张、且是3个字的名字,存入到一个新集合中去
        
        //开始使用Stream流来解决这个问题
        List<String> list2 = names.stream().filter(s -> s.startsWith("张"))
                .filter(a -> a.length()==3).collect(Collectors.toList());
        System.out.println(list2);
    }
}

运行结果是同样的:


Stream流的使用步骤

获取Stream流的方法

  • 获取集合的Stream流
Collection提供的如下方法 说明
default Stream<E> stream() 获取当前集合对象的Stream流
  • 获取数组的Stream流
Arrays类提供的如下方法 说明
public static<T> Stream<T> stream( T[] array ) 获取当前数组的stream流


Stream类提供的如下方法 说明
public static<T> Stream<T> of(T...values) 获取当前接收数据的stream流

获取List集合的Stream流


获取Set集合的Stream流

import java.util.*;
import java.util.stream.Stream;
 
public class streamTest2 {
    public static void main(String[] args) {
        //2.获取Set集合的Stream流
        Set<String> set = new HashSet<>();
        Collections.addAll(set,"刘德华","张曼玉","蜘蛛精","马德","德玛西亚");
        Stream<String> stream1 = set.stream();
        //顺带遍历出名字带“德”的
        stream1.filter(s -> s.contains("德")).forEach(s -> System.out.println(s));
    }
}
 

运行结果:


获取Map集合的Stream流

import java.util.*;
import java.util.stream.Stream;
 
public class streamTest2 {
    public static void main(String[] args) {
        //3.获取Map集合的Stream流
        Map<String,Double> map = new HashMap<>();
        map.put("古力娜扎",172.3);
        map.put("迪丽热巴",168.3);
        map.put("马尔扎哈",166.3);
        map.put("卡尔扎巴",168.3);
 
        //键
        Set<String> keys = map.keySet();
        Stream<String> ks = keys.stream();
 
        //值
        Collection<Double> values = map.values();
        Stream<Double> vs = values.stream();
 
        //键+值
        Set<Map.Entry<String,Double>> entries = map.entrySet();
        Stream<Map.Entry<String,Double>> kvs = entries.stream();
 
        //遍历出键中包含“巴”字的元素
        kvs.filter(e -> e.getKey().contains("巴"))
                .forEach(e -> System.out.println(e.getKey() + "-->" + e.getValue()));
    }
}
 

运行结果:


获取数组的Stream流



END



目录
相关文章
|
10月前
|
Java API 数据处理
Java新特性:使用Stream API重构你的数据处理
Java新特性:使用Stream API重构你的数据处理
|
9月前
|
存储 Oracle Java
java零基础学习者入门课程
本课程为Java零基础入门教程,涵盖环境搭建、变量、运算符、条件循环、数组及面向对象基础,每讲配示例代码与实践建议,助你循序渐进掌握核心知识,轻松迈入Java编程世界。
704 0
|
10月前
|
Java
java入门代码示例
本文介绍Java入门基础,包含Hello World、变量类型、条件判断、循环及方法定义等核心语法示例,帮助初学者快速掌握Java编程基本结构与逻辑。
681 0
|
10月前
|
Java 大数据 API
Java Stream API:现代集合处理与函数式编程
Java Stream API:现代集合处理与函数式编程
413 100
|
10月前
|
Java API 数据处理
Java Stream API:现代集合处理新方式
Java Stream API:现代集合处理新方式
391 101
|
10月前
|
并行计算 Java 大数据
Java Stream API:现代数据处理之道
Java Stream API:现代数据处理之道
495 101
|
9月前
|
Java
Java语言实现字母大小写转换的方法
Java提供了多种灵活的方法来处理字符串中的字母大小写转换。根据具体需求,可以选择适合的方法来实现。在大多数情况下,使用 String类或 Character类的方法已经足够。但是,在需要更复杂的逻辑或处理非常规字符集时,可以通过字符流或手动遍历字符串来实现更精细的控制。
532 18
|
10月前
|
算法 安全 Java
除了类,Java中的接口和方法也可以使用泛型吗?
除了类,Java中的接口和方法也可以使用泛型吗?
273 11
|
9月前
|
Java 编译器 Go
【Java】(5)方法的概念、方法的调用、方法重载、构造方法的创建
Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被创建,在其他地方被引用方法的优点使程序变得更简短而清晰。有利于程序维护。可以提高程序开发的效率。提高了代码的重用性。方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符。例如:addPerson。这种就属于驼峰写法下划线可能出现在 JUnit 测试方法名称中用以分隔名称的逻辑组件。
361 4
|
9月前
|
编解码 Java 开发者
Java String类的关键方法总结
以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
490 5