如果会发生重复,我需要确认数据。但不能这样做。
在这种情况下,是否可以将字符串转换为对象,或通过另一个表达式连接该数据?
我有一个问题:(a, b)-
Map<Student, Subject> result = markList
.stream()
.collect(Collectors.toMap(
Mark::getStudent,
Mark::getSubject,
(a, b) -> a + ", " + b));
result.forEach((student, subject) ->
System.out.printf("%s %s : %s ", student.getFirstName(),
student.getLastName(), subject.getName()));
以下是标记列表:
List<Mark> markList = new ArrayList<>();
markList.add(new Mark(student_1, subject_1, 1));
markList.add(new Mark(student_1, subject_2, 2));
markList.add(new Mark(student_2, subject_1, 1));
并希望获得加入的主题数据,以防发现重复的主题数据
预期输出:
[
student\u 1(带
subject\u 1)、
subject\u 2(带
subject\u 1)和
student\u 2(带
subject\u 1(带
subject\u 1)):
约翰·麦克唐纳:数学、天文学
Kira Wild:数学
=====================================================
但此代码没有重复项,如下所示:
(a,b)-
输出:
约翰·麦克唐纳:数学
Kira Wild:数学
首先,(a, b)-
鉴于您的最新更新,您没有得到预期结果的原因是您正在使用合并函数
(a, b)-
相反,您要做的是以某种方式维护两个学生,因此本质上,您将有一个映射
这可以通过以下方式完成:
Map<Student, List<Subject>> result = markList
.stream()
.collect(Collectors.toMap(
Mark::getStudent,
v -> new ArrayList<>(singletonList(v.getSubject())),
(a, b) -> {a.addAll(b); return a;}));
实际上,这最好通过
groupingBy
使用映射
作为下游收集器来完成:
Map<Student, List<Subject>> resultSet = markList.stream()
.collect(groupingBy(Mark::getStudent,
mapping(Mark::getSubject, toList())));
最后,您可以使用以下方法测试结果:
resultSet.forEach((student, subjects) ->
System.out.printf("%s %s : %s ", student.getFirstName(), student.getLastName(),
subjects.stream().map(Subject::getName).collect(joining(", "))));
为什么会发生异常'lambda表达式中的ad返回类型:AuthenticatedUser无法转换为User'?如果可选为空,我只想返回此AuthenticatedUser。
我需要通过触摸按钮来更改形状类型。我尝试了这种方法,但我得到了一个错误,即形状类型不能转换为布尔值。代码: 错误:
将异常获取为 :lambda表达式中的返回类型错误:
以下代码在IntelliJ和Eclipse中编译得很好,但JDK编译器1.8.0\u 25对此表示不满。首先,代码。 javac 1.8.0\u 25的输出为: 当我更换时?超级E只需使用E,JDK就能成功编译。 当我将替换为,JDK编译成功。 由于它适用于JDK 1.8.0_60,我怀疑它是编译器错误。 有没有详细说明是什么原因造成的以及何时修复的?
我试图通过加速,用java流编写一个查询。当我尝试在select中时,我得到以下错误: lambda表达式中的错误返回类型:BigDecimal不能转换为long。运算符-不能应用于int、BigDecimaljava.math.。 我的代码是这样的: 我该如何解决这个问题?
我有以下接口和类: 抽象规则类包含一组标准。我想通过评估每个标准来评估规则。我在标题中提到的c1.evaluate().和(c2.evaluate())上有编译错误。 我应该如何解决这个问题? 谢谢。