首页 > 解决方案 > 编写没有 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;
            }
        }
    }

标签: javaspringspring-boot

解决方案


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);
}

我想让你自己弄清楚,但既然你问...


推荐阅读