Java Stream 是集合组件之一,它是用于在内部迭代其项目的 API,也就是说,如果我们想使用 Java 集合迭代功能,例如 Java 迭代器或 Java 迭代器,它可以迭代自己的元素。 for-each 循环具有 Java 可迭代接口,它必须实现元素迭代,流不会更改数据结构内存中的值,它将使用默认方法提供结果,我们可以为其分配默认空间(如管道结构)产生所需的输出。
首先,这可能是向集合接口引入流方法的最有争议的地方。显示项目列表后,将使用特定流打开流数据。最简单和最流行的操作是 forEach() 循环,它遍历流元素并在每个元素上调用给定的函数。这个方法也被广泛使用,它已经被包含在Iterable、Map和其他类中。流只不过是数据包装器,它们不想存储数据或影响底层数据源。流支持许多有用且高性能的操作,这些操作用可以顺序或并行完成的 lambda 进行简洁描述。流不是数据结构,因为它不存储任何数据。它也不会对底层数据源进行任何更改。如果数据与我们的 Stream 是有序的,那么我们的数据是按顺序处理还是不按顺序处理并不重要;该实现将保持 Stream 的遭遇顺序。通常,如果使用的 Spliterator 具有 CONCURRENT 属性,则流是线程安全的。流 API 为管道的每个步骤定义了许多契约,如果其中任何一个被破坏,则可能会发生意外的行为或异常。
开始您的免费软件开发课程
网络开发、编程语言、软件测试及其他
流从集合、数组和其他输入/输出通道获取输入,这些是将输入传递给函数的方式。在新的对象创建过程的帮助下,将创建对象并将其分配给特定的函数调用。此外,Streams 仅按照管道架构及其方法提供输出结果,不会改变值和真实的数据结构过程。此外,集合主要是在其他循环和外部循环的帮助下进行迭代的,但是当我们使用流式传输时,需要在特定循环操作的帮助下进行内部迭代,大多数情况下它不需要外部循环。 Java 8中Stream API的终端方法之一是用于收集数据的collect()方法。它使我们能够使用 Stream 实例中包含的数据组件进行可变折叠操作(例如,将元素重新打包到数据结构中并应用附加逻辑、连接它们等)。在 Collectors 类中,您将找到所有预定义的实现。为了获得更好的可读性,通常的做法是使用以下静态导入。要将所有 Stream 项聚合到 List 对象中,请使用 toList 收集器。要知道的关键一点是,使用这种技术,我们不能假设任何特定的 List 实现。如果我们想更好地控制它,我们可以使用 toCollection 来代替。要将所有 Stream 项聚合到 Set 实例中,请使用 toSet 收集器。重要的是要认识到,使用这种方法,我们不能假设任何特定的 Set 实现。如果我们想更好地控制它,我们可以使用集合。 Set 中没有重复的元素。如果我们的集合包含相同的组件,它们只会在最终集合中出现一次。要将 Stream 项聚合到 Map 实例中,请使用 toMap 收集器。为此,我们需要两个函数:keyMapper 和 valueMapper。要从 Stream 元素中提取 Map 键,我们将使用 keyMapper,要检索与特定键关联的值,我们将使用 valueMapper。
在java中创建流的不同方式,例如使用集合、从指定值创建流数据。它还使用流数据创建一个数组,并在 Stream 的帮助下计算空白空间。 empty() 方法不仅可以计算空白空间,我们还可以使用 Stream.empty() 方法创建 Stream 数据。构建器()方法。借助 iterate() 方法,我们可以计算无限的 Stream 数据,因为 Iterable 是接口,它没有提供任何默认方法 StreamSupport.Stream() 方法,使用 Iterable 对象获取 Stream 数据。
import java.util.*; import java.util.stream.*; class first { private static <T> void methd(Iterable<T> itr) { Stream<T> str = StreamSupport .stream(itr.spliterator(), false); Iterator<T> its = str.iterator(); while (its.hasNext()) { System.out.print(its.next() + " "); } } public static void main(String[] args) { Iterable<String> itr = Arrays.<em>asList</em>("Marina", "Adyar", "Parrys or Broadway","Tambaram","Gundy"); methd(itr); } }
示例输出:
In the above example we used Stream Instance creation and also we can use the StreamSupport class for accessing the stream() method. Like that we can use the Iterator<> interface for accessing the stream inputs and assign it to the variable. In the main method using Iterable<> interface we can access the values as Arrays and asList() method.
import java.util.*; import java.util.stream.*; class Second { private static <T> void methd(Iterator<T> itr) { Spliterator<T> splititr = Spliterators spliteratorUnknownSize(itr, Spliterator.NONNULL); Stream<T> str = StreamSupport.<em>stream</em>(splititr, false); Iterator<T> its = str.iterator(); while (its.hasNext()) { System.<em>out</em>.print(its.next() + " "); } } public static void main(String[] args) Iterator<String> itre = Arrays .asList("Thiruvanmaiyur", "Perungalathur", "TNagar","Central","Besant Nagar") .iterator(); methd(itre); } }
Sample Output:
In the above example, we used an additionally Spliterator class for accessing the Stream inputs using Iterator interface we can access the Array List inputs using the asList() method.
While streams aren’t used by everyone and don’t necessarily indicate a superior approach, free certificate courses can help developers understand this newer way of programming, which incorporates functional-style programming and lambda expressions for Java. It’s up to developers to determine whether to use functional or imperative programming styles, and by taking advantage of free certificate courses, they can learn how to effectively combine both ideas to enhance their programs with enough effort.
以上是Java集合流的详细内容。更多信息请关注PHP中文网其他相关文章!