我有一个 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/