开发者

Java8中创建Stream流的几种常见方式

目录
  • 1. 通过Collection系列集合创建
  • 2. 通过Arrays中的静态方法asList()创建
  • 3. 通过Stream类中的静态方法of()
  • 4. 通过BufferedReader的lines()方法创建
  • 5. 通过Stream.iterate()或Stream.generate()创建无限流
  • 6.方法补充

在Java 8中,​​Stream​​ API 是一种新的处理数据的方式,它允许以声明式的方式来处理数据集合。​​Stream​​ 可以让你以一种非常自然且高效的方式来表达对数据集合的复杂操作。本文将详细介绍在Java 8中创建 ​​Stream​​ 流的几种常见方式。

1. 通过Collection系列集合创建

​​Collection​​ 接口在Java 8中新增了一个 ​​stream()​​ 方法和一个 ​​parallelStream()​​ 方法,可以用来生成相应的 ​​Stream​​ 对象。

示例代码

import java.util.ArrayList;
import java.util.List;
 
public class CollectionToStream {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Apple");
        list.add("Banana");
        list.add("Cherry");
 
        // 创建顺序流
        Stream<String> stream = list.stream();
        
        // 创建并行流
        Stream<String> parallelStream = list.parallelStream();
    }
}

2. 通过Arrays中的静态方法asList()创建

​​Arrays​​ 类提供了一个 ​​asList()​​ 方法,可以将数组转换成列表,然后调用列表的 ​​stream()​​ 方法来创建 ​​Stream​​。

示例代码

import java.util.Arrays;
import java.util.stream.Stream;
 
public class ArrayToStream {
    public static void main(String[] args) {
        String[] array = {"Apple", "Banana", "Cherry"};
        
        // 使用Arrays.asList()转换成列表后创建Stream
        Stream<String> stream = Arrays.asList(array).stream();
    }
}

3. 通过Stream类中的静态方法of()

​​Stream​​ 类提供了一个 ​​of()​​ 方android法,可以直接接受不定数量的参数,生成包含这些值的 ​​Stream​​。

示例代码

import java.util.stream.Stream;
 
public class StreamOf {
    public static void main(String[] args) {
        Stream<String> stream = Stream.of("Apple", "Banana", "Cherry");
    }
}

4. 通过BufferedReader的lines()方法创建

​​BufferedReader​​ 类提供了一个 ​​lines()​​ 方法,可以读取文件中的每一行文本,并返回一个 ​​Stream​​,其中每个元素都是文件中的一行。

示例代码

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.stream.Stream;
 
public class BufferedReaderToStream {
    public static void main(String[] args) {
        try (BufferedReader reader = new BufferedReader(new FileReader("path/to/file.txt"))) {
            Stream<String> lines = reader.lines();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

5. 通过Stream.iterate()或Stream.generate()创建无限流

​​Stream​​ 还提供了 ​​iterate()​​ 和 ​​generate()​​ 方法来创建无限流。这两个方法都可以接收一个 Supplier 函数接口作为参数,用于生成流中的元素。

​​iterate(T seed, UnaryOperator<T> f)​​:从种子值开始,根据函数生成后续元素。

​​generate(Supplier<T> s)​​:根据提供的 Supplier 生成流中的元素。

示例代码

import java.util.stream.Stream;
 
public class InfiniteStream {
    public static void main(String[] args) {
        // 无限流 - iterate
        Stream<Integer> iterate = Stream.iterate(0, n -> n + 2);
        iterate.limit(10).forEach(System.out::println); // 输出前10个偶数
 
        // 无限流 - generate
        Stream<Double> generate = Stream.generate(Math::random);
        generate.limit(5).forEach(System.out::println); // 输出5个随机数
    }
}

以上就是在Java 8中创建 ​​Stream​​​ 的几种主要方式。每种方式都有其适用的场景,了解这些创建方式有助于我们在实际开发中更加灵活地使用 ​​Stream​​ API。

6.方法补充

在Java 8中,​​Stream​​​ API 提供了一种高效且易于使用的处理数据集合的方式。以下是几种常见的创建 ​​Stream​​ 的方法,并附上相应的示例代码:

1. 通过集合创建 Stream

import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;
 
public clemGmqjass CollectionToStream {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
        
        // 通过集合的 stream() 方法创建 Stream
        Stream<String> stream = list.stream();
        
        // 打印 Stream 中的元素
        stream.forEach(System.out::println);
    }
}

2. 通过数组创建 Stream

import java.util.Arrays;
import java.util.stream.Stream;
 
public class ArrayToStream {
    public static void main(String[] args) {
        String[] array = {"Apple", "Banana", "Cherry"};
        
        // 通过 Arrays.stream() 方法创建 Stream
        Stream<String> stream = Arrays.stream(array);
        
        // 打印 Stream 中的元素
        stream.forEach(System.out::println);
    }
}

3. 通过 Stream.of() 创建 Stream

import java.util.stream.Stream;
 
public class StreamOf {
    public static void main(String[] args) {
        // 通过 Stream.of() 方法创建 Stream
        Stream<String> stream = Stream.of("Apple", "Banana", "Cherry");
        
        // 打印 Stream 中的元素
        stream.forEach(System.out::println);
    }
}

4. 通过生成器创建 Stream

import java.util.stream.Stream;
 
public class StreamGenerate {
    public static void main(String[] args) {
        // 通过 Stream.generate() 方法创建无限流
        Stream<String> infiniteStream = Stream.generate(() -> "Apple");
        
        // 限制流的大小并打印前5个元素
        infiniteStream.limit(5).forEach(System.out::println);
    }
}

5. 通过迭代器创建 Stream

import java.util.stream.Stream;
 
public class StreamIterate {
    public static void main(String[] args) {
        // 通过 Stream.iterate() 方法创建无限流
        Stream<Integer> infiniteStream = Stream.iterate(1, n -> n + 1);
        
        // 限制流的大小并打印前5个元素
    www.devze.com    infiniteStream.limit(5).forEach(System.out::println);
    }
}

6. 通过文件读取创建 Stream

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.stream.Stream;
 
public class FileToStream {
    public static void main(String[] args) {
        try {
            // 通过 Files.lines() 方法从文件中创建 Stream
            Stream<String> lines = Files.lines(Paths.get("path/to/your/file.txt"));
            
            // 打印文件中的每一行
            lines.forEach(System.out::println);
            
            // 关闭 Stream
            lines.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在Java 8中,​​Stream​​​ API 是处理集合数据的一种非常强大的工具,它允许你以声明式的方式处理数据集合。创建 ​​Stream​​​ 的方式有很多种,下面详细介绍几种常见的创建 ​​Stream​​ 的方法,并提供相应的代码示例。

1. 从集合创建

你可以从任何实现了 ​​Collection​​ 接口的集合(如 ​​List​​、​​Set​​ 等)中创建一个 ​​Stream​​。

import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;
 
public class StreamFromCollection {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
        
        // 从List创建Stream
        Stream<String> stream = list.stream();
        
        // 使用Stream
        stream.forEacjavascripth(System.out::println);
    }
}

2. 从数组创建

你可以从数组直接创建 ​​Stream​​。

import java.util.stream.Stream;
 
public class StreamFromArray {
    public static void main(String[] args) {
        String[] array = {"Apple", "Banana", "Cherry"};
        
        // 从数组创建Stream
        Stream<String> stream = Arrays.stream(array);
        
        // 使用Stream
        stream.forEach(System.out::println);
    }
}

3. 从值创建

使用 ​​Stream.of()​​ 方法可以从一系列值创建一个 ​​Stream​​。

import java.util.stream.Stream;
 
public class StreamOfValues {
    public static void main(String[] args) {
        // 从值创建Stream
        Stream<String> stream = Stream.of("Apple", "Banana", "Cherry");
        
        // 使用Stream
        stream.forEach(System.out::println);
    }
}

4. 生成无限流

​​Stream​​ API 提供了两种生成无限流的方法:​​iterate​​ 和 ​​generate​​。这些流理论上是无限的,但可以通过 ​​limit​​ 操作来限制大小。

使用 ​​iterate​​

import java.util.stream.Stream;
 
public class InfiniteStreamIterate {
    public static void main(String[] args) {
        // 生成无限流,从0开始每次加2
        Stream<Integer> infiniteStream = Stream.iterate(0, n -> n + 2);
        
        // 限制流的大小为5
        infiniteStream.limit(5).forEach(System.out::println);
    }
}

使用 ​​generate​​

import java.util.Random;
import java.util.stream.Stream;
 
public class InfiniteStreamGenerate {
    public static void main(String[] args) {
        Random random = new Random();
        
        // 生成无限流,每个元素都是随机数
        Stream<Double> infiniteStream = Stream.generate(random::nextDouble);
        
        // 限制流的大小为5
        infiniteStream.limit(5).forEach(System.out::println);
    }
}

5. 文件行读取

可以使用 ​​Files.lines​​ 方法从文件中读取行并创建 ​​Stream​​。

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.stream.Stream;
 
p编程客栈ublic class StreamFromFile {
    public static void main(String[] args) {
        try (Stream<String> lines = Files.lines(Paths.get("path/to/your/file.txt"))) {
            // 处理每一行
            lines.forEach(System.out::println);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

到此这篇关于Java8中创建Stream流的几种常见方式介绍的文章就介绍到这了,更多相关Java8创建Stream流内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新开发

开发排行榜