當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。