集合是一個內存數據結構,它保存該數據結構當前擁有的所有值。在將集合中的每個元素添加到集合之前,都必須對其進行計算。可以對集合執行搜索、排序、插入、操作和刪除等操作。它提供了許多接口,例如(放,List Interface,List Interface,雙端隊列) 和類似 (ArrayList,Vector,LinkedList,PriorityQueue,HashSet)。
另一方麵,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,並且這些操作可能需要大量時間。 |
流是不可修改的,即不能從流中添加或刪除元素。 | 這些是可修改的,即可以輕鬆地向集合中添加或刪除元素。 |
隻需提及操作即可在內部迭代流。 | 使用循環在外部迭代集合。 |
相關用法
- Java StreamTokenizer commentChar()用法及代碼示例
- Java StreamTokenizer eolIsSignificant()用法及代碼示例
- Java StreamTokenizer lineno()用法及代碼示例
- Java StreamTokenizer lowerCaseNode()用法及代碼示例
- Java StreamTokenizer nextToken()用法及代碼示例
- Java StreamTokenizer ordinaryChar()用法及代碼示例
- Java StreamTokenizer ordinaryChars()用法及代碼示例
- Java StreamTokenizer parseNumbers()用法及代碼示例
- Java StreamTokenizer pushBack()用法及代碼示例
- Java StreamTokenizer quoteChar()用法及代碼示例
- Java StreamTokenizer resetSyntax()用法及代碼示例
- Java StreamTokenizer slashSlashComments()用法及代碼示例
- Java StreamTokenizer slashStarComments()用法及代碼示例
- Java StreamTokenizer toString()用法及代碼示例
- Java StreamTokenizer whitespaceChars()用法及代碼示例
- Java StreamTokenizer wordChars()用法及代碼示例
- Java Stream allMatch()用法及代碼示例
- Java Stream anyMatch()用法及代碼示例
- Java Stream builder()用法及代碼示例
- Java Stream.concat()用法及代碼示例
- Java Stream count()用法及代碼示例
- Java Stream.distinct()用法及代碼示例
- Java Stream dropWhile()用法及代碼示例
- Java Stream empty()用法及代碼示例
- Java Stream filter()用法及代碼示例
注:本文由純淨天空篩選整理自goelshubhangi3118大神的英文原創作品 Difference Between Streams and Collections in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。