当前位置: 首页 > 面试题库 >

Java 8填充数组与供应商

谢英耀
2023-03-14
问题内容

有没有一种方法可以使用Java
8填充数组Supplier

我想写:

Supplier<Object> supplier = () -> new Object();
Object[] array = new Object[size];
Arrays.fill(array, supplier);

注意:我知道我可以编写自己的方法。


问题答案:

如果您要 创建一个新数组,其中 填充了供应商生成的结果,则可以使用

Object[] array = Stream.generate(supplier)
                       .limit(arraySize)
                       .toArray(); // will generate new *Object[]* array

对于不同类型比Object[]你可以使用toArray(IntFunction<YourType[]>generator);toArray(YourType[]::new)学分。

String[] array  = Stream.generate(supplier)
                        .limit(10)
                        .toArray(String[]::new); //now *String[]* array will be returned

流还使我们能够使用大多数“流行的”原始类型,即int
longdouble。例如,我们可以用来IntStream#toArray从创建int[]保持元素IntStream。为了“填充”
IntStream来自供应商的元素,我们可以IntStream.generate(intSupplier)

int[] array = IntStream.generate(()->1)
                       .limit(5)
                       .toArray(); //returns `new Int[]{1,1,1,1,1}

如果要用Supplier的数据填充 现有的数组 ,请参阅[StuartMarks发布的答案,该答案的基础是,除了处理对象数组之外,该数组还支持
一些 基本类型的数组:和。Arrays.setAll(array, supplier) __double[] int[]``long[]

另一种选择 是使用@Hogle评论中的使用 创意
解决方案

Arrays.asList(array).replaceAll(x -> supplier.get()); 
//you can even overwrite a range using `subList`


 类似资料:
  • 我想写: 注意:我知道我可以编写自己的方法。

  • Arrays 类提供了一个 fill() 方法,可以在指定位置进行数值填充。fill() 方法虽然可以填充数组,但是它的功能有限制, 只能使用同一个数值进行填充。语法如下: 其中,array 表示数组,value 表示填充的值。 例 1 声明一个 int 类型的 number 数组,然后通过 for 语句进行遍历,在该语句中调用 Arrays 类的 fill() 方法来填充数组,并输出数组中元素的

  • 问题内容: 在数组末尾加零的更Python方式是什么? 在我的实际用例中,实际上我想将数组填充到最接近的1024倍数。例如:1342 => 2048,3000 => 3072 问题答案: 使用mode可以满足您的需要,在这里我们可以传递一个元组作为第二个参数来告诉每个大小要填充多少个零,例如a将在左边填充 2个 零,在右边填充 3个 零: 给出为: 也可以通过将元组的元组作为填充宽度来填充2D n

  • 我必须用奇数的范围(这里是)填充数组:1,3,5,7,9...但我总是在每个奇数之间有一个0,我不明白为什么。 注:注释中大写字母下的代码是由我们的教授给出的... 输出:

  • 问题内容: 我需要使用构造函数创建一个数组,添加一个将数组打印为序列的方法,以及一个使用double类型的随机数填充数组的方法。 到目前为止,这是我所做的: 我正在努力弄清楚如何用在randomFill方法中生成的随机数填充数组。谢谢! 问题答案: 您需要添加逻辑以使用 randomFill 方法将随机值分配给double []数组。 更改 至 然后,您可以调用方法,包括main方法中的list(

  • 问题内容: 是否有任何语法/软件包允许使用数字范围快速填充Java数组,例如在perl中? 例如 另外,这里提供了一个包,该包允许在上述数字列表中获取第n个数字,而无需实际创建数组(这可能很大)? 例如 实施起来并不太困难,但是我想这可能很普遍,所以也许已经完成了。 问题答案: 不像True Soft的答案那么干净,但是您可以使用Google Guava达到相同的效果: 请注意,您需要一些静态导入