在输入中,我有一个整数和字符串的列表。
第一条流工作正常,第二条流工作到过滤器,我不知道为什么。我的代码:
import java.util.List;
import java.util.stream.*;
public class MixedSum {
public int sum(List<?> mixed) {
int m = mixed.stream().filter(x -> x instanceof String).map(x -> Integer.parseInt((String) x)).collect(Collectors.summingInt(Integer::intValue));
int n = mixed.stream().filter(x -> x instanceof Integer).collect(Collectors.summingInt(Integer::intValue));
return m + n;
}
}
我有这个错误:
错误:找不到适合收集的方法(收集器
编译器无法推断类型。你需要像第一步一样施展:
int n = mixed.stream()
.filter(x -> x instanceof Integer)
.map(x -> (int) x)
.collect(Collectors.summingInt(Integer::intValue));
或者如果要使用方法引用
int n = mixed.stream()
.filter(x -> x instanceof Integer)
.map(Integer.class::cast)
.collect(Collectors.summingInt(Integer::intValue));
在第二个流中应用方法引用Integer::intValue之前,必须将流的元素强制转换为Integer类型。
由于您只想获得整数原语的总和,因此无需求助于收集器,相反,您可以将对象流强制到IntStream
并应用sum()
方法。
int m = mixed.stream()
.filter(x -> x instanceof String)
.mapToInt(x -> Integer.parseInt((String) x))
.sum();
int n = mixed.stream()
.filter(x -> x instanceof Integer)
.mapToInt(x -> (Integer) x)
.sum();
无需重复两次,因为在源代码列表中,只能丢弃除整数和字符串之外的类型过滤器。因此,您的方法最终可以归结为几行:
public int sum(List<?> mixed) {
return mixed.stream()
.mapToInt(x -> x instanceof Integer? (Integer) x : Integer.parseInt((String) x))
.sum();
}
注:
strSource.stream().map(Integer::parseInt).collect(Collectors.toList());
因此,将免除方法的多余责任和合同,以:
list.stream().mapToInt(Integer::intValue).sum();
我一直在研究如何将IntStream“收集”到一个列表中从而生成一个随机的int列表,但是编译器一直在抱怨。下面是一段代码: 编译器给出的错误: 错误:(42,49)Java:接口java.util.Stream.IntStream中的方法collect不能应用于给定类型; 必需:java.util.function.supplier,java.util.function.objintconsum
在启动activity中找不到合适的方法是显示错误的错误是: 错误:(123,17)错误:找不到适合startActivities(Intent)方法上下文的方法。startActivities(Intent[])不适用(参数不匹配;Intent无法转换为Intent[])方法上下文。startActivities(Intent[])不适用(参数不匹配;Intent无法转换为Intent[])方法
我想收集一些数据并将其存储到数据库(在Java中,使用MySQL)。其中一个数据是日期(创建/插入此条目时)。 我已经试过了 将日期转换为SQL友好的格式,但我仍然得到错误 找不到适合getDate(Date)的方法 方法结果集。getDate(int)不适用 (参数不匹配;日期无法转换为int) 方法ResultSet.get日期(字符串)不适用 (参数不匹配;日期无法转换为字符串) 错误发生在
什么时候使用和?有没有人有好的、具体的例子来说明什么时候走一条路或者走另一条路更好呢? Javadoc提到collect()是一个可变约简。 以上的说法是猜测,然而,我希望一个专家在这里插话。
我试图在Flink的数据流上应用每窗口功能。以下是我的代码 下面是我的实现MyProcessWindow函数 然而,当我试图通过maven编译上述代码时,我得到了以下错误 知道我做错了什么吗?仅供参考,我正在使用ApacheFlink 1.5.1版,并在Mac上使用maven3编译Java代码。
算法问题:给定一个非负整数列表,将它们排列成最大的数。 例如,给定[3,30,34,5,9],形成的最大数是9534330。 注意:结果可能很大,因此需要返回一个字符串,而不是整数。 而且我还在想办法避免使用额外的空间。