gpt4 book ai didi

java - 使用 Java Stream 将参数从 map 方法添加到 foreach 方法

转载 作者:行者123 更新时间:2023-11-30 06:02:52 28 4
gpt4 key购买 nike

我写了一个小例子来解释我的问题:

import java.util.Arrays;
import java.util.List;


public class Example {

public static void main( String[] args ) {
String [] array = {"1 0101 5","1 0101 5"};
Arrays.stream(array)
.map(str->str.split(" "))//every String is mapped to an array of String
.map(arr-> returnAListOf5Element( Integer.parseInt(arr[0]),arr[1],Integer.parseInt(arr[2])))
.forEach(list-> tesMyList(list));//i want to send the Integer.parseInt(arr[2]) as a second argument
}
/**
*
* test if the list has size of 5
*/
private static void testMyList(List<Integer> myList) {
if (myList.size()==5)
System.out.println("Ok");
}

/**
*
* return a list of 5 element
* @return
*/
private static List<Integer> returnAListOf5Element( int i, String s, int i1 ) {
List list = Arrays.asList(1,2,3,4,5);
return list;
}
}

所以我有一些字符串,例如“1 0101 5”,“1 0101 5”......,我使用流操作进行一些计算。

问题是我想将在map方法中找到的参数arr[2]添加到在foreach方法中找到的testMyList方法。

方法testMyList应该是这样的:

 private static void testMyList(List<Integer> myList, int size) {
if (myList.size()==size)
System.out.println("Ok");
}

最佳答案

我可以看到三种可能的解决方案:

  1. returnAListOf5Element返回arr[2]列表内。 (比方说,通过联系,它是返回列表中的最后一个元素。)这是一种肮脏的方法。

  2. map返回 Map.Entry<List<Integer>, Integer>它由 returnAListOf5Element(...) 的结果组成调用 arr[2]这是一种更合理的方式。

这两个IDE基于前一个操作的缓存状态,因此您可以在下一个操作中获取它。这是获得之前链上计算的结果的唯一方法。

  • 您可以用一个简单的循环替换流链,其中每个中间计算都可以访问。
  • 我发现最后一种方法最简单且性能最佳。看来您不会从这里的流中获得任何好处。我会坚持下去。

    关于java - 使用 Java Stream 将参数从 map 方法添加到 foreach 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53411304/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com