java - 如何在不知道数组大小的情况下初始化数组
问题描述
我想编写一个方法,该方法返回一个数组,该数组仅包含input
大于或等于的数字n
。
到目前为止,我有以下内容:
public static int[] filter(int[] input, int n) {
int counter = 0;
int[] res = new int[input.length];
for(int i = 0; i < input.length; i++) {
if(input[i] >= n) {
res[counter++] = input[i];
}
}
return res;
}
我知道这int[] res = new int[input.length]
是不正确的,因为它使用输入数组的大小初始化数组,但我无法让它工作。
结果, forint[] input = {4,3,2,5,1,6}
和int n = 3
我得到4 3 5 6 0 0
.
我认为它与计数器有关,我尝试过int[] res = new int[counter]
,但因为counter = 0
它的长度为 0。
res
我的问题:当我不知道它有多大时,如何初始化数组?
解决方案
不要创建数组;让 JDK 为您完成:
public static int[] filter(int[] input, int n) {
return Arrays.stream(input)
.filter(i -> i >= n)
.toArray();
}
它的代码也少了很多。
推荐阅读
- php - 如何完全(我的意思是完全)销毁所有会话数据并防止缓存访问?
- file - 如何使用 corona sdk 读取特定文件
- javascript - 允许javascript控制一些环境的东西
- wpf - WPF Datagrid:如何通过鼠标单击列标题来清除列排序?
- android - 如何修复 viewmodel.setText 中的“NullPointerException”?
- sql - 通过分组查找丢失的记录
- android - 从另一个活动更新多个按钮的 settext
- angular - 将 Angular 应用程序部署到 heroku 和运行 ng serve 时出错?
- sql-server - 将多个销售额的总和汇总到一个列中
- spring-boot - 避免在属性更改/刷新时重置 HikariCP 数据源连接池