如何根据给定列表的顺序重新排列HashMap的键值对?
按指定列表顺序输出HashMap键值对
现有数据
HashMap 初始化
HashMap<String, String> map = new HashMap(); map.put("1","a"); map.put("2","b"); map.put("3","c"); map.put("4","d"); map.put("5","e");
ArrayList 初始化
ArrayList<String> list = new ArrayList(); list.add("5"); list.add("1"); list.add("3"); list.add("4"); list.add("2");
期望输出
5 -> e 1 -> a 3 -> c 4 -> d 2 -> b
注:你提供的期望输出中2 -> a应为笔误,根据HashMap定义,键"2"对应的值是"b"。
实现方法
核心逻辑是遍历有序的ArrayList,按顺序从HashMap中取出对应键的值,利用ArrayList的有序性保证输出顺序。
完整代码示例
import java.util.ArrayList; import java.util.HashMap; public class OrderedMapOutput { public static void main(String[] args) { HashMap<String, String> map = new HashMap<>(); map.put("1", "a"); map.put("2", "b"); map.put("3", "c"); map.put("4", "d"); map.put("5", "e"); ArrayList<String> list = new ArrayList<>(); list.add("5"); list.add("1"); list.add("3"); list.add("4"); list.add("2"); // 遍历列表,按顺序输出键值对 for (String key : list) { // 若列表中存在HashMap没有的键,可通过getOrDefault设置默认值 String value = map.getOrDefault(key, "无对应值"); System.out.println(key + " -> " + value); } } }
关键说明
- 直接遍历ArrayList的元素,每个元素作为键从HashMap取值,天然保证输出顺序与列表一致。
- 使用
getOrDefault是为了处理列表中存在HashMap未包含的键的情况,避免空指针异常;如果能确保所有列表元素都是HashMap的有效键,直接用map.get(key)即可。
内容的提问来源于stack exchange,提问作者Hasnain Ali Bohra
相关产品推荐
相关产品推荐

