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 面试问题及答案

更新于: 2024-06-18

304 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.