【发布时间】:2021-06-15 16:22:26
【问题描述】:
我解决的问题如下:
给定一个非负整数列表,返回一个整数列表 最右边的数字。
rightDigit([1, 22, 93]) → [1, 2, 3] rightDigit([16, 8, 886, 8, 1]) → [6, 8, 6, 8, 1] rightDigit([10, 0]) → [0, 0]
问题本身很简单,我用单行流操作解决了。
return nums.stream().map(e -> e % 10).collect(Collectors.toList());
但是,为了测试我对匿名类的理解,我决定使用匿名类来实现这一点,提出的是:
public List<Integer> rightDigit(List<Integer> nums) {
nums.replaceAll(new java.util.function.UnaryOperator<Integer>() {
public Integer apply(Integer n) {
return new Integer(n.intValue() % 10);
}
});
return nums;
}
我的问题是我遇到了 NoClassDefFoundError 错误,并且无法自行解决。我会很感激知道我在这里做错了什么,谢谢。
【问题讨论】:
-
你能把完整的stacktrace放到哪个类没有找到吗?
-
无法复制。为我工作。在您的案例中找不到什么类?
Exception in ... java.lang.NoClassDefFoundError:在你的情况下,冒号后面是什么? -
@AxelRichter 这是来自codingbat.java网站的问题,他们的编译错误仅限于NoClassDefFoundError:Shell$1,并且无法打印堆栈跟踪。我认为这个错误一定与该特定网站的 Java 环境有关
-
请注意,
replaceAll不等同于流操作(并且该更改与您从 lambda 表达式更改为匿名内部类无关)。
标签: java collections java-8 functional-programming