我对Java 8中的lambdas不熟悉。 这是我的代码的简短片段:
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。
答案 0 :(得分:2)
从您的代码段看来stockToRating
似乎是List<RatingCacheElement>
。 List.get
方法接受int
(即list元素的索引)。如果要按条件查找元素,请考虑使用Stream API:
RatingCacheElement cacheElement = stockToRating.stream()
.filter(x -> x.stockID == query.stockID).findFirst().orElse(null);
这里你要说按条件过滤列表项的流,然后找到匹配过滤器的第一个元素,如果没有找到则返回null。