【问题标题】:How to return the values of a filtered Hashmap in java?如何在java中返回过滤后的Hashmap的值?
【发布时间】:2020-03-08 02:18:43
【问题描述】:

所以我创建了这个 HashMap 并继续使用 lambda 和 Stream 对其进行过滤:

public class engineMain {

    public static void main(String[] args) {
        CarEngine engineOne = new CarEngine("A named Engine", 2000, 8, "E10");
        CarEngine engineTwo = new CarEngine("Another named Engine", 2200, 6, "E10");
        String a = "Another named Engine";
        HashMap<String, CarEngine> hmap = new HashMap();
        hmap.put(engineOne.getEngineName(), engineOne);
        hmap.put(engineTwo.getEngineName(), engineTwo);
        hmap.entrySet().stream().filter(e -> e.getValue().getEngineName().contains(a))
                .forEach(e -> System.out.println(e));
    }

}

如何改进我的最后一行代码,使其返回过滤后的值?现在它返回:Another named Engine=javaapplication40.CarEngine@6ce253f1

我也尝试过这种方式

HashMap<String, CarEngine> map = new HashMap<>();
map.entrySet().stream().filter(x -> x.getKey().equals(a))
        .flatMap(x -> ((Map<String, CarEngine>) x.get(a)).values().stream())
        .forEach(System.out::println);

【问题讨论】:

  • 您正在打印一个空行。应该是e -&gt; System.out.println(e)
  • 你期望多少价值?
  • @YCF_L 只有一个
  • 你能显示你期望的输出吗?您可能应该在 CarEngine 类中实现 toString()
  • 只有一个CarEngineEntryMap?

标签: java oop collections hashmap java-stream


【解决方案1】:

您似乎正在搜索:

CarEngine find = hmap.values().stream()
                   .filter(e -> e.getEngineName().contains(a)) 
                   .findFirst() 
                   .orElse(null);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-08
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-10
    • 2013-04-04
    相关资源
    最近更新 更多