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



目录
相关文章
|
4天前
|
Java API
深入探讨 Java 8 集合操作:全面解析 Stream API 的强大功能
深入探讨 Java 8 集合操作:全面解析 Stream API 的强大功能
14 2
|
5天前
|
数据采集 Java
selenium+java入门demo
selenium+java入门demo
20 4
|
5天前
|
存储 Java 开发者
Java数据类型:从入门到精通,你不得不看的“宝典”
【6月更文挑战第13天】Java凭借其跨平台能力和丰富的类库深受开发者喜爱。学习Java首先需掌握数据类型,包括基本类型(整型、浮点型、字符型、布尔型)和引用类型(类、接口、数组)。基本类型占用固定内存,值不可变;引用类型存储对象地址。通过示例代码展示了如何声明和使用这些类型。此外,Java的封装类如Integer等提供了操作便利。理解数据类型对于程序设计至关重要,是进一步学习Java高级特性的基础。开始你的Java编程之旅,不断实践,你将在Java世界中不断进步。
|
23小时前
|
Java
在 Java 中,类是一种定义对象的模板,它包含数据成员(字段)和方法。
在 Java 中,类是一种定义对象的模板,它包含数据成员(字段)和方法。
|
1天前
|
安全 Java 索引
Java List:从入门到精通,一篇文章就够了!
【6月更文挑战第17天】Java List是有序元素集合,支持索引访问、添加、删除和修改。从ArrayList、LinkedList到Vector,各种实现满足不同场景需求。使用add()添加元素,get()获取,set()修改,remove()删除。遍历可用for-each或Iterator,subList()创建子集。注意线程安全,可选synchronizedList()、Vector或CopyOnWriteArrayList。理解List的基本操作和特性,能提升编程效率。
|
1天前
|
Java
Java中的内置锁synchronized关键字和wait()、notifyAll()方法
【6月更文挑战第17天】Java的synchronized和wait/notify实现顺序打印ALI:共享volatile变量`count`,三个线程分别检查`count`值,匹配时打印并减1,未匹配时等待。每个`print`方法加锁,确保互斥访问。代码示例展示了线程同步机制。考虑异常处理及实际场景的扩展需求。
32 3
|
2天前
|
Arthas 存储 监控
性能监控之常见 Java Heap Dump 方法
【6月更文挑战8天】性能监控之常见 Java Heap Dump 方法
25 7
|
3天前
|
Java
Java 小白也能看懂!类和对象详解,轻松入门面向对象编程
【6月更文挑战第15天】面向对象编程对新手可能抽象,但理解Java中的类和对象是关键。类是事物模板,如“汽车”类包含属性(颜色、型号、速度)和行为(启动、加速、刹车)。对象是类的实例,像具体的汽车。通过创建对象并调用其方法,可以模拟现实世界的情景。例如,`Car myCar = new Car();`创建了一个汽车对象,之后可设置属性和调用方法。多练习有助于掌握这一概念。
|
4天前
|
存储 安全 Java
深入理解Java中的ThreadLocal机制:原理、方法与使用场景解析
深入理解Java中的ThreadLocal机制:原理、方法与使用场景解析
17 2
|
5天前
|
Java 开发工具 Android开发
Java 程序设计 第1章 Java入门 笔记
Java 程序设计 第1章 Java入门 笔记