当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Java Streams和Collections的区别用法及代码示例


集合是一个内存数据结构,它保存该数据结构当前拥有的所有值。在将集合中的每个元素添加到集合之前,都必须对其进行计算。可以对集合执行搜索、排序、插入、操作和删除等操作。它提供了许多接口,例如(,List Interface,List Interface,双端队列) 和类似 (ArrayList,Vector,LinkedList,PriorityQueue,HashSet)。

Difference-Between-Streams-and-Collections-in-Java

另一方面,IStream 是 Java 8 中引入的一个 API,用于处理对象集合。流是支持各种方法的对象序列,这些方法可以通过管道传输以产生所需的结果。 Stream API 用于处理对象集合。

Java流的主要特点如下:

  • 流不是数据结构,而是从集合、数组或 I/O 通道获取输入。
  • 流不会改变原始数据结构,它们仅根据管道方法提供结果。
  • 每个中间操作都是延迟执行的,并返回另一个流作为结果,因此各种中间操作可以被管道化。终端操作标记流的结束并返回结果。

示例 1:集合

Java


// Java Program to Illustrate Collection
// Importing required classes
import java.io.*;
import java.util.*;
// Main class
class GfG {
    // Main driver method
    public static void main(String[] args)
    {
        // Creating an instance of list
        List<String> companyList = new ArrayList<>();
        // Adding elements using add() method
        companyList.add("Google");
        companyList.add("Apple");
        companyList.add("Microsoft");
        // Now creating a comparator
        Comparator<String> com
            = (String o1, String o2) -> o1.compareTo(o2);
        // Sorting the list
        Collections.sort(companyList, com);
        // Iterating using for each loop
        for (String name : companyList) {
            // Printing the elements
            System.out.println(name);
        }
    }
}
输出
Apple
Google
Microsoft

例子:

Java


// Java Program to Demonstrate streams
// Importing required classes
import java.io.*;
import java.util.*;
// Main class
class GFG {
    // Main driver method
    public static void main(String[] args)
    {
        // Creating an empty Arraylist
        List<String> companyList = new ArrayList<>();
        // Adding elements to above ArrayList
        companyList.add("Google");
        companyList.add("Apple");
        companyList.add("Microsoft");
        // Sorting the list
        // using sorted() method and
        // printing using for-each loop
        companyList.stream().sorted().forEach(
            System.out::println);
    }
}
输出
Apple
Google
Microsoft

让我们将它们之间的差异列表如下:

STREAMS

COLLECTIONS

它不存储数据,而是对源数据结构(即集合)进行操作。 它存储/保存数据结构当前在特定数据结构(如 Set、List 或 Map)中拥有的所有数据,
他们使用像 lambda 这样的函数式接口,这使得它非常适合编程语言。 不要使用函数式接口。
Java Streams 是可消耗的,即;要遍历流,每次都需要创建它。 非消耗品,即;可以多次遍历而无需再次创建。
Java 流支持顺序处理和并行处理。 支持并行处理,并行处理对于实现高性能非常有帮助。
所有Java流API接口和类都在j中ava.util.stream包。 原始类型的特定类,例如IntStream,LongStream, 和DoubleStream在集合中使用,因为原始数据类型(例如 int、long)在集合中使用auto-boxing,并且这些操作可能需要大量时间。
流是不可修改的,即不能从流中添加或删除元素。 这些是可修改的,即可以轻松地向集合中添加或删除元素。
只需提及操作即可在内部迭代流。 使用循环在外部迭代集合。


相关用法


注:本文由纯净天空筛选整理自goelshubhangi3118大神的英文原创作品 Difference Between Streams and Collections in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。