JDK 1.8
设置和收集。
我想数一数那个十字路口
我试试这个:
SortedSet<VsatVlan> vsatVlans;
Collection<Integer> mobilityNsVlansList = mobilityNS.getVlanIds();
....
long intersectionCount = vsatVlans.stream()
.filter(vsatVlan -> mobilityNsVlansList.contains(vsatVlan.getVlanId()))
.collect(Collectors.collectingAndThen(
Collectors.toSet(),
set -> { // error here
if (set.size() != 1) {
throw new IllegalStateException();
}
return set.size();
}
));
但我有一个错误:
incompatible parameter types in lambda expression: expected Set<Object> but found Set<VsatVlan>
java: incompatible types: inference variable RR has incompatible bounds
lower bounds: java.lang.Long,java.lang.Object
lower bounds: java.lang.Integer
如果我得到它的权利,你想返回的交叉计数只有如果不是零,否则你想抛出一个异常。您需要显式地提供集合的类型以消除您得到的错误:
return vsatVlans.stream()
.filter(vsatVlan -> mobilityNsVlansList.contains(vsatVlan.getVlanId()))
.collect(Collectors.collectingAndThen(Collectors.toSet(),
(Set<VsatVlan> set) -> {
if (set.size() == 0) {
throw new IllegalStateException("");
}
return set.size();
}
));
您也可以在此处使用选项,并避免if块:
return vsatVlans.stream()
.filter(vsatVlan -> mobilityNsVlansList.contains(vsatVlan.getVlanId()))
.collect(Collectors.collectingAndThen(Collectors.counting(), Optional::of))
.filter(x -> x > 0)
.orElseThrow(() -> new IllegalStateException(""));
但IMO计数,然后在一个单独的if块中进行检查,比上述两种方法更具可读性:
long count = vsatVlans.stream()
.filter(vsatVlan -> mobilityNsVlansList.contains(vsatVlan.getVlanId()))
.count();
if(count == 0){
new IllegalStateException("")
}
return count;
错误:(65,52)java:不兼容类型:推理变量U的边界不兼容等式约束:akka。http。javadsl。模型HttpResponse下限:com。我的演员。聊天演员。聊天信息 下面这行代码显示了错误: 这里是HttpResponse是Akka Http的。 我不知道它在说什么。解决它的方法应该是什么?
我有以下代码 出于某种原因,它抛出了以下编译错误 Solution.java:11:错误:不兼容类型:推断变量T具有不兼容的边界List=Arrays.asList(A);^相等约束:整数下界:int[]其中T是类型变量:T扩展方法中声明的Object asList(T...) 我假设这是一个Java8功能但我不知道如何解决这个错误
我有一个树对象,它包含树对象的子对象(HashMap),等等 我需要按numericPosition变量筛选对象 例如: 在这种情况下,我应该得到一个树对象过滤的数字位置 树类 以防 我得到这个错误:错误:不兼容类型:推断变量R具有不兼容的边界 我一直在遵循这个例子,但它对我不起作用。https://www.mkyong.com/java8/java-8-filter-a-map-examples
我试图从一个流列表,但我有一个例外。 这是一个带有对象列表的电影对象。 以下是电影: 我在列表中添加元素: 我有一个编译器错误:
问题内容: 我有以下代码 由于某种原因,它会引发以下编译错误 Solution.java:11:错误:不兼容的类型:推断变量T具有不兼容的边界List list = Arrays.asList(A); ^等式约束:整数下限:int []其中T是类型变量:T扩展了在方法asList(T …)中声明的对象 我假设这是Java 8功能,但是我不确定如何解决该错误 问题答案: 期望可变数量的。不是,而是,
以下程序在Java7和Eclipse Mars RC2中编译Java8: 使用javac 1.8.0_45编译器,报告了以下编译错误: 解决方法是在本地分配一个变量: 我知道类型推断在Java8中发生了很大变化(例如,由于JEP 101“广义目标类型推断”)。那么,这是一个错误还是一个新的语言“功能”? 编辑:我也向Oracle报告了JI-9021550,但以防万一这是Java8中的一个“功能”,