Java: 有没有简单的通过名字获取cookie的方法?

Java: Is there a simple way to get cookie by name?

我搜索了有关如何通过名称获取 cookie 的解决方案,所有解决方案都指向使用 for-loopsif 语句。请参阅下面的代码。

for (Cookie cookie : cookies) {
    if (cookie.getName().equals("<NAME>")) {
        // do something here
    } 
    if (cookie.getName().equals("<ANOTHER_NAME>")) {
        // do something here
    } 
    // and so on...
}

有没有更简单的方法来通过名称获取值而无需执行循环和 if's?

我需要对我想要检索的某些 cookie 进行一些 "certain" 处理 另外,我不想遍历每个 cookie!可能有 10 个或更多,而我只需要三个左右。

逻辑(正如 Matt Ball 评论 中所建议的那样)是:

// ...
Map<String, Cookie> cookieMap = new HashMap<>();
for (Cookie cookie : cookies) {
    cookieMap.put(cookie.getName(), cookie);
}

Cookie firstRequiredCookie = cookieMap.get("<NAME>");
// do something with firstRequiredCookie 
Cookie nextRequiredCookie = cookieMap.get("<ANOTHER_NAME>");
// do something with nextRequiredCookie 
// ...

Cookie 名称不是唯一的,因此使用 Cookie 名称作为映射键不是理想的方法。

由于 cookie 名称不是唯一的,这可能就是此 Java API 从未更新以提供 getCookieByName() 方法的原因。

或者在现代 Java:

Map<String, String> cookieMap = 
                Arrays.stream(request.getCookies())
                      .collect(Collectors.toMap(Cookie::getName, Cookie::getValue));