我有两个Coll对象流,我想在实例变量sayI
的基础上找到公共对象。我需要使用Java8流来实现这一点。此外,我需要更新j
变量,比如说公共元素的乘数为1000。
class Coll
{
Integer i;
Integer j;
public Coll(Integer i, Integer j) {
this.i = i;
this.j = j;
}
public Integer getI() {
return i;
}
public void setI(Integer i) {
this.i = i;
}
public Integer getJ() {
return j;
}
public void setJ(Integer j) {
this.j = j;
}
}
我在写一些东西,比如:
public static void main(String args[])
{
Stream<Coll> stream1 = Stream.of(new Coll(1,10),new Coll(2,20),new Coll(3,30) );
Stream<Coll> stream2 = Stream.of(new Coll(2,20),new Coll(3,30),new Coll(4,40) );
Stream<Coll> common = stream1
.filter(stream2
.map(x->x.getI())
.collect(Collectors.toList())
::equals(stream2
.map(x->x.getI()))
.collect(Collectors.toList()));
common.forEach( x-> x.setJ(x.getJ()*1000));
common.forEach(x -> System.out.println(x));
}
我在这个方法上做错了!!我猜Java8不支持像equals那样带有参数的方法!!
我收到一个编译错误:应为“')”或“;”
环绕等于方法
移动逻辑以收集Stream2外部的所有i
。然后过滤stream1中的所有Coll
,如果另一个列表中存在i
。
List<Integer> secondCollStreamI = stream2
.map(Coll::getI)
.collect(Collectors.toList());
Stream<Coll> common = stream1
.filter(coll -> secondCollStreamI.contains(coll.getI()));
common.forEach( x-> x.setJ(x.getJ()*1000));
common.forEach(x -> System.out.println(x));
最后一条语句将导致IllegalStateExcema
(流已被操作或关闭
),因为您不能重用流。你需要在某个地方把它收集到一个List
List<Coll> common = stream1
.filter(coll -> secondCollStreamI.contains(coll.getI()))
.collect(Collectors.toList());
common.forEach(x -> x.setJ(x.getJ() * 1000));
common.forEach(System.out::println);
或者,如果你想在不收集的情况下快速完成所有事情
stream1
.filter(coll -> secondCollStreamI.contains(coll.getI()))
.forEach(x-> {
x.setJ(x.getJ()*1000);
System.out.println(x);
});
你可以这样做,
Map<Integer, Coll> colsByI = listTwo.stream()
.collect(Collectors.toMap(Coll::getI, Function.identity()));
List<Coll> commonElements = listOne.stream()
.filter(c -> Objects.nonNull(colsByI.get(c.getI())) && c.getI().equals(colsByI.get(c.getI()).getI()))
.map(c -> new Coll(c.getI(), c.getJ() * 1000))
.collect(Collectors.toList());
问题内容: 可以说我有一个单词列表,我想创建一个将新列表的大小作为参数并返回新列表的方法。我如何从原始sourceList中获得随机单词? 那么,如何以及在哪里可以使用我的随机数? 问题答案: 我找到了适当的解决方案。Random提供了一些返回流的方法。例如ints(size)会创建一个随机整数流。
我有一个对象列表(文件夹)。该列表中的每个对象A都有一个对象B(合作伙伴)列表,对象B也有一个对象C(人员)列表。对象C包含一个属性代码,我想用它来使用Java8进行过滤。 我试过下面的代码,但它似乎不工作: 你们知道我如何使用FlatMap从
问题内容: 我正在开发一个需要借助(NIST P-256,P-256,prime256v1)公钥来验证签名的应用程序。 公钥是由其他应用程序在较早的时间点生成的,并以十六进制编码存储在我的数据库中。十六进制字符串的格式等效于OpenSSL在调用以前由生成的文件时将生成的十六进制字符串。消息和签名是从其他应用程序接收的。考虑以下测试数据: 现在,这 应该 是有效的签名。 我的目标是使用Java和/或
我正在开发一个应用程序,它需要在(NIST P-256,P-256,prime256v1)公钥的帮助下验证签名。 公钥是由一个不同的应用程序在较早的时间点生成的,并以十六进制编码存储在我的数据库中。这里的十六进制字符串的格式等效于OpenSSL在调用时生成的十六进制字符串,该文件以前是由生成的。消息和签名是从不同的应用程序接收的。考虑以下测试数据: 现在这应该是一个有效的签名。 我的目标是使用Ja
我是Javascript新手,我正试图从包含多个对象的数组中获取id键的值。 通过 for..在循环中,我需要对象的id - 如1,2或3 - 与不同的值进行比较。 我试着这样做: 但是,我这样做了,删除Id值返回未定义。 我想不通为什么返回未定义,我无法解决这个问题。 我希望我能很好地表达自己,对不起我的英语不好。