Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基本算法_Java_Filter_Java 8_Java Stream - Fatal编程技术网

Java 基本算法

Java 基本算法,java,filter,java-8,java-stream,Java,Filter,Java 8,Java Stream,我试图编写一个流函数,将数组中的所有正数更改为“大” 示例:makeItBig([-1,3,5,-5])返回相同的数组,更改为[-1,“big”,“big”,“-5] 到目前为止,我的结论是: public static Object[] makeItBig(Object[] arr){ List <Object> array = arr.stream().filter(nb->nb>0).forEach(nb -> “big”); return a

我试图编写一个流函数,将数组中的所有正数更改为“大”

示例:
makeItBig([-1,3,5,-5])
返回相同的数组,更改为
[-1,“big”,“big”,“-5]

到目前为止,我的结论是:

public static Object[] makeItBig(Object[] arr){
    List <Object> array = arr.stream().filter(nb->nb>0).forEach(nb -> “big”);
    return array;
}
publicstaticobject[]makeItBig(Object[]arr){
List array=arr.stream().filter(nb->nb>0).forEach(nb->“big”);
返回数组;
}

我被认为是在使用map()I/o或forEach()之外……

这里有许多错误:

  • 不能对数组调用
    .stream()
    ,需要使用
  • 从流中删除值,因此结果中不会出现负数
  • 不返回结果;这就像(tx:as)循环的
    ,您需要返回修改后的值
  • 您不能只将对象与
    进行比较:您需要先将其转换为
    int
  • 流不返回列表;你需要取钱或打电话
我建议您阅读您希望使用的每个函数的文档(搜索“Java8FunctionName”非常好),阅读您收到的错误消息,并了解您正在使用的不同类型;您应该能够以这种方式解决遇到的大多数问题

总之,修改它将成为以下代码:

导入java.util.array;
导入java.util.List;
班级变大了{
公共静态void main(字符串[]args){
Object[]bigged=makeItBig(新对象[]{-1,3,5,-5});
for(对象o:bigged){
系统输出打印ln(o);
}
}
公共静态对象[]makeItBig(对象[]arr){
返回数组
.stream(arr)
.map(x->((int)x>0)?“大”:x)
.toArray();
}
}

Tks等待您的回复!谢谢你的回复比利@卡米洛:不过,这不是很安全。至少使用
int[]
而不是强制转换为
int
s.@user不安全,不,但我不想更改方法的签名。当然,这也可以作为一个最小的例子,其中使用不同的类型,而不是
int
s和
String
s。是的,我没有责怪你,我只是建议OP在需要更具体的类型时不要使用Object[]s。