java - 编写没有 lambda 的方法
问题描述
在我们经历了 Spring 的课程中,我想了解这段代码
我有代码:
public class TopicService {
List<Topic> topics = new ArrayList<>(Arrays.asList(new Topic("1", "Petya", "Java"),
new Topic("2", "Vasya", "Javascript"),
new Topic("3", "Fedya", "Php")));
public Topic getTopic(String id) {
return topics.stream().filter(t -> t.getId().equals(id)).findFirst().get();
}
}
public void deleteTopic(String id) {
topics.removeIf(t -> t.getId().equals(id));
}
}
我还没有研究过,也不熟悉 lambda。帮助我以常规格式编写这些方法,如下所示:
public void updateTopic(String id, Topic topic) {
for (int i = 0; i < topics.size(); i++) {
Topic t = topics.get(i);
if (t.getId().equals(id)) {
topics.set(i, topic);
return;
}
}
}
解决方案
Stream 只是为接受函数式接口作为参数的各种方法准备您的集合(lambda 只是函数式接口的实现)。阅读 Java Stream 方法以获得理解。
public Topic getTopic(String id) {
for (Topic topic : topics)
if (topic.getId().equals(id)) return topic;
return null;
}
public void deleteTopic(String id) {
for (Topic topic : topics)
if (topic.getId().equals(id)) topics.remove(topic);
}
我想让你自己弄清楚,但既然你问...
推荐阅读
- hibernate - Hibernate - 脏检查不适用于@Convert
- scala - 这是什么意思 - 未应用的方法仅在需要函数类型时才转换为函数
- javascript - Angular 对象不支持 Internet Explorer 的属性或方法“scrollTo”
- angular - Angular CLI 6. 不能在 app.module 的子模块中使用自定义库组件
- java - 反应本机和java之间的WebSocket
- android - Gradle daemon 无法启动 jvm no Xmx1024 或任何其他错误
- solr - Solr:如何在搜索时排除具有负面含义的文本
- c# - C# Unity 项目,运行时冻结
- angular - NativeScript/Angular - 如何在两个应用程序之间共享导入?
- php - 无法使用 PHP 7.1.17 在 Magento 2.1.7 上安装数据迁移工具