java - 将数组迭代转换为 lambda 表达式

标签 java lambda java-8

我有以下代码迭代 Cookies 以重置名称与 CookieSession.NAME 匹配的 cookie>

  Cookie[] cookies = httpServletRequest.getCookies();
        LOGGER.info("Clearing cookies on welcome page");
        if (cookies != null)
            for (Cookie cookie : cookies) {
                if (cookie.getName().equals(CookieSession.NAME)) {                      
                cookie.setValue(null);
                cookie.setMaxAge(0);
                cookie.setPath("/");
                httpServletResponse.addCookie(cookie);
              }
            }

有人可以使用 java 8 lambda 表达式简化它吗

最佳答案

不确定是否会简化,但可以做到,是的:

Arrays.stream(cookies)
      .filter(c -> c.getName().equals(CookieSession.NAME))
      .forEach(cookie -> {
          cookie.setValue(null);
          cookie.setMaxAge(0);
          cookie.setPath("/");
          httpServletResponse.addCookie(cookie);
      });

关于java - 将数组迭代转换为 lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36508530/

相关文章:

java 8 Map.merge 是线程安全的吗?

c++ - 如何在 lambda 捕获中显式捕获宏?

ruby - block 参数列表中的星号

java - 异常 : javax.net.ssl.SSLProtocolException 和编译器选项

java - 泽西日志记录功能 : in web. xml

c++ - lambda 中的赋值

java - Java 中的 'SAM type' 是什么?

java - 将具有 Runnable 的处理程序升级为 lambda 表达式

java - 调用 GergorianCalendar.isLeapYear() 时可以使用变量吗?

java - Integer 对象的同步块(synchronized block)