Java 中流與迴圈的比較
流 是一個管道系統,主要用於在 Java 環境中聚合一些操作,例如 (filter()、map()、forEach() 和 collect())。此函式包含一個源,後跟零個值,然後終止操作。函式是輸入輸出流,主要取決於輸入引數。
每個流在以下情況下工作 -
它從資料來源開始。
透過管道處理資料元素。
在終端操作中終止自身。
流與迴圈比較示例
這是一個示例 -
Benchmark Is Here Mode Cnt Score Error Units ForLoopPerformanceTest.usingForEachLoop thrpt 20 259.008 ± 17.888 ops/s ForLoopPerformanceTest.usingIterator thrpt 20 256.016 ± 10.342 ops/s ForLoopPerformanceTest.usingSimpleForLoop thrpt 20 495.308 ± 12.866 ops/s ForLoopPerformanceTest.usingStream thrpt 20 257.174 ± 15.880 ops/s
流與迴圈比較演算法
在這個可能的演算法中,我們將向您展示如何執行兩個單獨流之間的比較過程以從中獲取值。
步驟 1 - 開始流程。
步驟 2 - 匯入並宣告 Java 包。
步驟 3 - 宣告一個公共主類。
步驟 4 - 宣告一個主驅動方法。
步驟 5 - 宣告一個普通的整數流。
步驟 6 - 新增一個新的行流。
步驟 7 - 使用跳過值提及整數流。
步驟 8 - 新增一個新的內聯值。
步驟 9 - 根據需要新增更多字串。
步驟 10 - 宣告一個字串。
步驟 11 - 編寫輸出流。
步驟 12 - 對陣列進行排序並列印它們。
步驟 13 - 獲取返回值。
步驟 14 - 終止流程。
流與迴圈比較語法
class Person {
private String name;
private int age;
private String gender;
private List<Person> siblings;
public Person(String name, int age, String gender, List<Person> siblings) {
this.name = name;
this.age = age;
this.gender = gender;
this.siblings = siblings;
}
public String getGender() {
return gender;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public List<Person> getSiblings() {
return siblings;
}
}
private void streaming() {
List<Person> persons = List.of();
List<String> result = persons.stream()
.filter(p -> p.getAge() > 18)
.filter(p -> p.getAge() <= 65)
.filter(p -> p.getName() != null)
.filter(p -> p.getName().startsWith("B"))
.map(p -> p.getName())
.collect(Collectors.toList());
}
在上面這個可能的語法中,我們嘗試向您展示如何建立一個輸入流並將其與另一個 陣列列表 進行比較。透過使用上面提到的這些特定語法,我們正在朝著與問題陳述相關的一些可能方法邁進。
遵循的方法
方法 1 - 使用 java.io.IOException 並從現有列表建立新列表來比較流與迴圈的 Java 程式
方法 2 - 當比較流的操作導致異常時顯示程式碼執行的 Java 程式
方法 1:使用 Java.io.IOException 並從現有列表建立新列表來比較流與迴圈
Java.io.IOException 的使用和從現有列表建立列表
在這種可能的方法中,我們將使用 java.io.IOException,並且我們將進一步建立一個特定的陣列列表,以獲取排序元素的新陣列列表作為輸出。
private void forLoop(){
List<Person> persons = List.of();
List<String> result = new ArrayList<>();
for(Person p : persons){
if(p.getAge() > 18 && p.getAge() <= 65 && p.getName() != null &&
p.getName().startsWith("B")){
result.add(p.getName());
}
}
}
示例 1
//Java Program to Compare Streams to Loops By Using java.io.IOException
import java.io.IOException;
import java.lang.String;
import java.nio.file.*;
import java.util.*;
import java.util.Arrays;
import java.util.List;
import java.util.stream.*;
public class ARBRDDKOLDHAKA {
public static void main(String[] args)
throws IOException{
System.out.println("Integer Stream Is Here: ");
IntStream.range(1, 20).forEach(System.out::print);
System.out.println();
System.out.println("Integer Stream Values With The Value Skip :");
IntStream.range(1, 20).skip(5).forEach(
x -> System.out.println(x));
System.out.println();
System.out.println("Integer Stream With Sum We Can Get: ");
System.out.println(IntStream.range(1, 5).sum());
System.out.println();
System.out.println(
"Stream.of, sorted and Find The First : ");
Stream.of("Rudra ", "Aboni ", "2022 ")
.sorted()
.findFirst()
.ifPresent(System.out::println);
System.out.println();
String[] names = { "India", "Bangladesh",
"Dhaka", "Kolkata",
"Esplanade", "Howrah Bridge",
"DU", "Indira Road",
"Kolkata Dhaka Cantt." };
System.out.println(
"Stream from Array, sort, filter and print : ");
Arrays
.stream(names)
.filter(x -> x.startsWith("S"))
.sorted()
.forEach(System.out::println);
System.out.println();
System.out.println(
"Average of squares of an int array : ");
Arrays.stream(new int[] { 2, 4, 6, 8, 10 })
.map(x -> x * x)
.average()
.ifPresent(System.out::println);
System.out.println();
System.out.println(
"Stream from List, filter and print : ");
List<String> people = Arrays.asList(
"AI", "Matlab", "Scikit", "TensorFlow",
"OpenCV", "DeepLearning", "NLP",
"NeuralNetworks");
people.stream()
.map(String::toLowerCase)
.filter(x -> x.startsWith("a"))
.forEach(System.out::println);
System.out.println();
System.out.println("Reduction - sum : ");
double total
= Stream.of(7.3, 1.5, 4.8)
.reduce(0.0,
(Double a, Double b) -> a + b);
System.out.println("Total = " + total);
System.out.println();
System.out.println(
"Reduction - summary statistics : ");
IntSummaryStatistics summary
= IntStream.of(7, 2, 19, 88, 73, 4, 10)
.summaryStatistics();
System.out.println(summary);
System.out.println();
}
}
輸出
Integer Stream Is Here:
12345678910111213141516171819
Integer Stream Values With The Value Skip :
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Integer Stream With Sum We Can Get:
10
Stream.of, sorted and Find The First :
2022
Stream from Array, sort, filter and print :
Average of squares of an int array :
44.0
Stream from List, filter and print :
ai
Reduction - sum :
Total = 13.600000000000001
Reduction - summary statistics :
IntSummaryStatistics{count=7, sum=203, min=2, average=29.000000, max=88}
在這種特定的 Java 方法中,我們將首先建立一個列表。透過使用該特定列表,我們將使用一些迴圈將流與之進行比較,以從之前宣告的資料集中獲取新的排序資料元素。
示例 2
//Java Program to Comparing Streams to Loops By Creating A New List From An Existing List
import java.util.*;
class ProgrammingLanguage {
int rank;
String name;
int value;
public ProgrammingLanguage(int rank, String name,
int value){
this.rank = rank;
this.name = name;
this.value = value;
}
}
public class ARBRDD {
public static void main(String[] args){
List<ProgrammingLanguage> programmingLanguage
= new ArrayList<ProgrammingLanguage>();
programmingLanguage.add(
new ProgrammingLanguage(1, "Java Programming",07102001 ));
programmingLanguage.add(
new ProgrammingLanguage(2, "Rust Programming", 16101997));
programmingLanguage.add(
new ProgrammingLanguage(3, "Ruby", 1500));
programmingLanguage.add(
new ProgrammingLanguage(4, "Scala", 2500));
programmingLanguage.add(
new ProgrammingLanguage(5, "Groovy", 4000));
List<Integer> languageValueList
= new ArrayList<Integer>();
for (ProgrammingLanguage language :
programmingLanguage) {
if (language.value < 3000) {
languageValueList.add(language.value);
}
}
System.out.println(languageValueList);
}
}
輸出
[1500, 2500]
方法 2:比較流導致異常時程式碼的執行
finally 塊的使用
在這種方法中,我們將解釋在開啟檔案(也稱為字串)並使用迴圈對其進行操作時,比較流可能發生的異常。這是一種修復流異常的方法,可幫助程式碼成功執行。
try {
System.out.println("Open files");
int a = 45;
int b = 0;
int div = a / b;
System.out.println("STATEMENT" + div);
}
示例
//Java program to show the execution of the code when exception is caused by the operation of comparing steram
import java.io.*;
public class ARBRDD {
public static void main(String[] args){
try {
System.out.println("Open files");
int a = 45;
int b = 0;
int div = a / b;
System.out.println("After dividing a and b ans is " + div);
}
catch (ArithmeticException ae) {
System.out.println("exception caught");
System.out.println(ae);
}
finally {
System.out.println("Inside finally block after the stream comparison");
System.out.println("Close files");
}
}
}
輸出
Open files exception caught java.lang.ArithmeticException: / by zero Inside finally block after the stream comparison Close files
結論
將流與迴圈進行比較是對陣列的輕量級操作,這有助於堆構建方面,並且我們可以掌握 CPU 使用情況。在今天的這篇文章中,我們嘗試使用上述提到的語法和演算法構建一些 Java 程式碼,以有效的方式解決問題陳述。
另請參閱: Java 面試問題及答案
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP