无法解析符号(Java 8)lambdas
我对Java 8中的lambdas有点陌生。 以下是我的代码的一小段:无法解析符号(Java 8)lambdas,lambda,java-8,Lambda,Java 8,我对Java 8中的lambdas有点陌生。 以下是我的代码的一小段: public void analyzeQueries() { while (queries.size() > 0) { int rating; InvestmentQuery query = getFirstPriority(queries); RatingCacheElement cacheElement = stockToRating.get(x -> x.stockID == q
public void analyzeQueries() {
while (queries.size() > 0) {
int rating;
InvestmentQuery query = getFirstPriority(queries);
RatingCacheElement cacheElement = stockToRating.get(x -> x.stockID == query.stockID);
if (cacheElement != null)
rating = cacheElement.rating;
else {
rating = calculateRating(query.stockID);
stockToRating.add(new RatingCacheElement(query.stockID, rating));
}
if (rating > 80)
stockTrader.enqueueStock(query);
}
}
编译器输出显示“错误:(23,54)java:不兼容类型:int不是函数接口”。
x.stockID
也被标记为“无法解析符号”。
使用Android Studio 2.3.3,Gradle 1.14.1。从您的代码片段中,似乎
库存管理
是一个列表
。该方法接受int
(即列表元素的索引)。如果您想通过条件找到元素,请考虑使用流API:
RatingCacheElement cacheElement = stockToRating.stream()
.filter(x -> x.stockID == query.stockID).findFirst().orElse(null);
在这里,您可以说按条件筛选列表项流,然后找到与筛选器匹配的第一个元素,如果没有找到,则返回null。stockToRating的类型是什么?
stockToRating是如何定义的private list stockToRating=new ArrayList()代码>嗯。这里似乎最好用地图。好的。。。但我想让它与arraylist一起工作。地图肯定会有用,但其中的乐趣何在?按照建议尝试@Tagir Valeev。但是,我收到一条不同的消息作为原始类型“java.util.Optional”的成员调用orElse()
。还请注意,x.stockID
保持红色。@bobuntu,您的stockToRating
似乎只是声明为List
,而不是声明为List
。如果没有,请编辑问题以包含整个源代码。我最初是这样做的,但在调试过程中,我只是选择了List
。按照您的建议解决了问题,谢谢!