【问题标题】:Get a list of map keys from a deque in Java从 Java 中的双端队列获取映射键列表
【发布时间】:2018-12-25 13:17:15
【问题描述】:

我有一个双端队列

Deque<Map<int, String> cars = new LinkedList();

我想使用 Java 流将 deque 映射中的所有键收集到一个

List<int>. 

有什么办法吗?

我尝试了类似的东西

cars.stream().map(car -> car.keySet()).collect(Collectors.toList()

这个问题与上一个问题不同。我想收集所有键,而不是从双端队列中删除地图。

【问题讨论】:

  • 您的意思可能是Map&lt;Integer, String&gt;List&lt;Integer&gt;LinkedList&lt;&gt;()。因为原语不是有效的泛型参数,所以不应使用原始类型

标签: java dictionary data-structures java-stream deque


【解决方案1】:

使用flatMap():

cars.stream()
    .map(Map::keySet)
    .flatMap(Set::stream)
    .collect(Collectors.toList())

【讨论】:

  • 效果很好。如果我想在同一个流中将 List 转换为 List,这可能吗?
  • 当然,只需添加一个.map(String::valueOf)
【解决方案2】:

你可以flatMap地图的钥匙:

List<Integer> keys =
    cars.stream().flatMap(car -> car.keySet().stream()).collect(Collectors.toList());

【讨论】:

    猜你喜欢
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    • 2010-12-28
    • 2017-03-04
    • 1970-01-01
    • 2016-08-18
    • 1970-01-01
    • 2018-07-02
    相关资源
    最近更新 更多