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 面試問題及答案