集合是一个内存数据结构,它保存该数据结构当前拥有的所有值。在将集合中的每个元素添加到集合之前,都必须对其进行计算。可以对集合执行搜索、排序、插入、操作和删除等操作。它提供了许多接口,例如(放,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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。