【发布时间】:2021-12-28 18:14:55
【问题描述】:
我有以下初始哈希图:
LatS=[59, 48, 59, 12, 48]
LatD=[41, 42, 46, 42]
EW=[W, W, W, W]
NS=[N, N, N, N]
LonM=[39, 23, 30, 48]
州=[OH、SD、WA、MA]
LatM=[5, 52, 35, 16]
City=[扬斯敦、扬克顿、亚基马、伍斯特]
LonS=[0, 23, 36, 0]
LonD=[80, 97, 120, 71]
我想使用具有以下调用的方法查询来过滤 Hashmap:
HashMap<Object, List<Object>> result = df.query( map -> "Youngstown".equals(df.getFrameInfo().get("City").get(0)))
函数的定义是:
`public HashMap<Object, List<Object>> query(Predicate<Object> cond){
HashMap<Object, List<Object>> ref = new HashMap<>(frameInfo);
Map<Object, List<Object>> result = ref.entrySet()
.stream()
.filter(cond)
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
System.out.println("Result: " + result);`
但最困难的部分是通过特定的方式获取hashmap结果。我只想将城市的列作为参数传递。
例如:如果我使用这个参数:
HashMap<Object, List<Object>> result = df.query( map -> "Youngstown".equals(df.getFrameInfo().get("City").get(0)))
输出应该是:
LatS=[59]
LatD=[41]
EW=[W]
NS=[N]
LonM=[N]
State=[OH]
LatM=[5]
City=[Youngstown]
LonS=[0]
Lond=[80]
非常感谢您!
【问题讨论】:
-
似乎必须为给定的城市名称定义城市索引,然后为该索引返回过滤后的地图。
-
如果我用另一种方法得到相同的结果可以吗?
-
我对此有一个答案,但与其他回答者一样,我不明白您选择的功能。你能进一步解释一下吗?另外,什么是 df 和 getFrameInfo() 方法?需要更多信息。
标签: java filter stream hashmap