java - 是否可以仅使用 Java 流从集合中获取特定数据?
问题描述
我有以下代码:
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
HttpHeaders httpHeaders = Collections.list(httpServletRequest.getHeaderNames())
.stream()
.collect(Collectors.toMap(
Function.identity(),
h -> Collections.list(httpServletRequest.getHeaders(h)),
(oldValue, newValue) -> newValue,
HttpHeaders::new
));
System.out.println(httpHeaders);
chain.doFilter(request, response);
}
它工作得很好,但我只需要获取一些特定的数据,比如接受编码和接受语言。有可能以某种方式做到这一点吗?
解决方案
一种可能的解决方案
List<String> headerNames = Arrays.asList("Accept-Encoding", "Content-Type");
Map<String, String> headers = headerNames.stream()
.collect(Collectors.toMap(Function.identity(), header -> httpServletRequest.getHeader(header)));
或者,如果您想获得 HttpHeaders 作为结果
List<String> headers = Arrays.asList("Accept-Encoding", "Content-Type");
HttpHeaders httpHeaders = new HttpHeaders();
headers.forEach(header -> {
request.getHeaders(header)
.asIterator()
.forEachRemaining(value -> httpHeaders.add(header, value));
});
推荐阅读
- docker - 容器化应用程序 - 设计模式
- c - 解码这些 Valgrind 调试器内存错误在我的代码中的含义
- powerbi - 可视化之间的单向交互
- reactjs - React Redux 存储更新 - 更改不更新组件
- xamarin.forms - Xamarin Forms 中 Android 项目中的 Xamarin iOS 参考
- nativescript - 设置平台特定属性后强制视图重绘
- javascript - 如何在没有手动索引的情况下在 Javascript 中对字母等级进行排序
- mysql - MySQL:基于聚合查询的视图索引
- rust - 是否可以对 Cargo.toml 中的外部代码应用补丁?
- c# - Sitecore - 占位符 - 多个项目,但对一种特定类型有限制