如何获取仅含一个键的Map<String, List<List<Double>>>中的键名?
获取Map中唯一未知键的几种方法
嘿,这个场景我太熟了——拿到一个结构固定但键名未知的Map,而且确定它只有一个键。既然keySet()返回的是没有索引访问的Set,那咱们换几个思路来搞定:
用迭代器直接取第一个元素
Set本身是可迭代的,所以直接用迭代器拿第一个元素就行,这是最直接的方式:String onlyKey = map.keySet().iterator().next();友情提示:如果Map是空的,这会抛出
NoSuchElementException,不过你已经明确Map有且只有一个键,所以完全不用担心这个问题。转成List或数组后用索引访问
要是你更习惯用索引操作,把Set转成List或者数组就可以了:// 转成ArrayList后取索引0的元素 String onlyKey = new ArrayList<>(map.keySet()).get(0);或者转成数组:
String onlyKey = map.keySet().toArray(new String[0])[0];这两种方式都很直观,适合你这种确定只有一个键的场景。
Java 8+用Stream API更优雅
如果你用的是Java 8及以上版本,Stream的写法会更简洁,还能优雅处理空Map的情况:// 如果Map为空会返回null,避免异常 String onlyKey = map.keySet().stream().findFirst().orElse(null);要是你百分百确定Map里有键,也可以直接用
.get():String onlyKey = map.keySet().stream().findFirst().get();
小提醒
虽然这些方法都能拿到唯一的键,但要确保Map确实只有一个键哦——如果有多个键,这些方法只会拿到Set里的第一个元素(而Set的顺序是不保证的),不过你的场景里不存在这个问题~
内容的提问来源于stack exchange,提问作者user3310334
相关产品推荐
相关产品推荐

