JavaScript转Java:实现动态字符串键-整数值映射对象的方法
JavaScript转Java:实现动态字符串键-整数值映射对象的方法
我太懂这种困惑了!在JavaScript里随手就能搞个键值映射对象,循环赋值超简单,刚接触Java的时候确实会纳闷——难道真的要专门写个类才能实现?其实完全不用,Java自带的集合类就能帮你快速搞定这个需求,和JS里的对象用法本质是一样的!
最直接的实现:用HashMap
Java里的HashMap就是专门用来存储键值对的容器,正好匹配你要的「字符串键对应整数值」的场景,完全不需要自定义类。直接看代码:
// 先定义你的MINI_KEYS数组 String[] MINI_KEYS = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}; // 创建键值映射容器:键是String类型,值是Integer类型 HashMap<String, Integer> MINI_KEYS_INVERSE = new HashMap<>(); // 循环填充映射关系,和JS的逻辑完全一致 for (int i = 0; i < MINI_KEYS.length; i++) { MINI_KEYS_INVERSE.put(MINI_KEYS[i], i); }
怎么像JS那样访问?
在JS里你用object["key"]取值,Java里用get()方法;赋值用put()方法,比如:
// 取值:获取"A"对应的索引 int indexOfA = MINI_KEYS_INVERSE.get("A"); // 结果是9 // 如果要新增或修改键值对 MINI_KEYS_INVERSE.put("Q", 31);
额外小技巧:Java 9+的简洁写法(不可变映射)
如果你的映射关系初始化后不需要修改,可以用Java 9新增的Map.ofEntries来快速创建不可变的映射,代码更短:
// 先准备好所有键值对条目 Map.Entry<String, Integer>[] entries = new Map.Entry[MINI_KEYS.length]; for (int i = 0; i < MINI_KEYS.length; i++) { entries[i] = Map.entry(MINI_KEYS[i], i); } // 创建不可变映射 Map<String, Integer> MINI_KEYS_INVERSE = Map.ofEntries(entries);
⚠️ 注意:这种方式创建的映射不能修改,调用put()会抛出UnsupportedOperationException,适合不需要变更的场景。
为啥不用自定义类?
Java是强类型语言,但它已经为我们封装好了各种常用的数据结构,像这种通用的键值映射需求,直接用Map接口的实现类(比如HashMap)就足够了,完全没必要从零写一个类——那是给自己加工作量呀!
内容来源于stack exchange
相关产品推荐
相关产品推荐

