java - 仅从 map 中提取相关键

标签 java hashmap pattern-matching

我有一个 int arry 输入,例如:[1,3,4]。

我还有一个固定/恒定的 map :

1 -> A
2 -> B
3 -> C
4 -> D
5 -> E

我希望我的输出是所有相关键的对应字符串。

对于我们的输入 [1,3,4] 示例,输出应为:“A,C,D”。

实现这一目标的最有效方法是什么?

我的想法是每次迭代整个 map 。
问题是,我在 android 中有一个远程调用,它获取一长串数据项,并且对列表中的每个项目执行此操作似乎有点......效率低下。也许有更高效和/或更优雅的东西。也许使用模式

最佳答案

假设数组与HashMap一起定义如下:

int arr[] = { 1, 3, 4 };
HashMap<Integer, String> hmap = new HashMap<>();

// data in the map
hmap.put(1, "A"); hmap.put(2, "B"); hmap.put(3, "C"); hmap.put(4, "D"); hmap.put(5, "E");

您可以迭代数组,而不是迭代整个 map

String[] array = Arrays.stream(arr).mapToObj(i -> hmap.get(i))
                       .filter(Objects::nonNull)
                       .toArray(String[]::new);

这给出了输出:

A C D

<小时/>

根据您的评论,要将其作为一个字符串连接,您可以使用:

String str = Arrays.stream(arr).mapToObj(i -> hmap.get(i))
                   .filter(Objects::nonNull)
                   .collect(Collectors.joining("/"));

关于java - 仅从 map 中提取相关键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53880524/

相关文章:

java - Gradle 多项目构建命令失败但对子项目正常工作

java - 使用HashMap创建动态函数调用

java - Hashmap with Streams in Java 8 Streams 收集 Map 的值

sql - 如果列表包含表 b 中另一列的子字符串,则使用表 b 中列的值更新列表

javascript - 如何将 ascii 正方形螺旋打印到控制台

将纬度/经度转换为 MGRS 坐标的 Java 库,反之亦然?

java - 用于测试大型文档映射的 Jaxb 策略

java - Spring MVC Maven 模块

javascript - 正则表达式使用 match() 将长文本分割成单独的句子

java - 增加 hashmap java 的值