当前位置: 首页 > 知识库问答 >
问题:

基于键返回列表筛选HashMap

岑炯
2023-03-14

我有一个带有键的HashMap,值是字符串。我想通过以字符串“locationid”开头的键值过滤HashMap,并将键中的值返回到字符串数组列表中。HashMap的填充方式如下:

HashMap<String, String> hm = new HashMap<String, String>();
hm.put("locationId2", rs.getString("ORG_Id"));
hm.put("locationType2", rs.getString("ORG_Type"));
hm.put("StartDate2", rs.getString("START_DT_TM_GMT"));


hm.put("locationId3", rs.getString("ORG_Id"));
hm.put("locationType3", rs.getString("ORG_Type"));
hm.put("StartDate3", rs.getString("START_DT_TM_GMT"));


hm.put("locationId4", rs.getString("ORG_Id"));
hm.put("locationType4", rs.getString("ORG_Type"));
hm.put("StartDate4", rs.getString("START_DT_TM_GMT"));


hm.put("locationId5", rs.getString("ORG_Id"));
hm.put("locationType5", rs.getString("ORG_Type"));
hm.put("StartDate5", rs.getString("START_DT_TM_GMT"));

我需要arraylist中的ORG_Id值。

List<String> facilityIds = hm.entrySet().stream().filter(x -> x.getKey().startsWith("locationId")).collect(map -> map.values());

我找不到可以将值放入字符串列表的位置。编译错误是它不识别values()方法。

更新还尝试将筛选后的Hashmap放入另一个Hashmap中,如下所示:

HashMap<String, String>  facilityIds = currentOperatingSchedules.entrySet().stream().filter(map -> map.getKey().startsWith("locationId")).collect(Collectors.toMap(x -> x.getKey(), x -> x.getValue()));

但得到的编译错误是它无法识别getKey()和getValue()

共有1个答案

丰辰沛
2023-03-14

这应该管用。它的工作方式如下:

  1. 获取映射的entryset并创建流。
  2. 筛选以locationid
  3. 开头的键
  4. 并将这些值收集到列表中。

         List<String> list = hm.entrySet().stream()
                      .filter(e->e.getKey().startsWith("locationId"))
                      .map(e->e.getValue())
                      .collect(Collectors.toList());

 类似资料:
  • 我正在尝试用Angular 7建立一个动态研究。我正在用多个键从API中获取一个数组:[_id= 我用ngFor显示我所有的结果,我已经用我找到的教程创建了一个过滤管道… 这是我的研究部分: 这是我的过滤管功能: 但是这只会过滤这样的数组:[

  • 我有一个dict列表,需要在嵌套dict中的'name'键(值保证是唯一的)上进行过滤,以便返回单个dict。我有一个可行的解决方案,但认为会有更高效/优雅/Pythonic的方法。 我尝试了字典理解,但无法理解它如何在列表上迭代

  • 我正在尝试根据另一个列表中存在的值筛选一个列表。我已经经历了其他类似的问题,并试图利用这些来实现我的目标,但无法做到这一点。 列表1由类(L1)的对象组成 列表2由类(L2)的对象组成 因此,筛选后,列表1将不包含,因为该模型与中的不匹配。 我怎么能这么做?

  • 我正在尝试使用一个以我的类单元格为键的HashMap。但是,在将项放入HashMap之后,对该项调用contains将返回false。 这会打印出false和true,在这里应该打印true和true,因为根据映射,docs containsKey使用.equals()。我做错了什么?

  • 本文向大家介绍Kotlin 筛选列表,包括了Kotlin 筛选列表的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 列表筛选可以对地图中的数据按照事先设置好的列表模板进行查询。在第一次点击列表筛选时,会进入筛选定制页面,如下图: 点击确认后,开始进行筛选设置:点击新增按钮,可对某个字段添加筛选要求,添加后然后选择条件旁边加号按钮,以设置对某一列的具体筛选要求。 如上图的筛选条件为“名称包含迪亚”的售点,继续单击加号可以对名称列继续添加条件。如果需要对其他字段进行筛选,可以再次单击新增按钮增加条件,点击确定及保存