【问题标题】:Returning first key of a LinkedHashMap返回 LinkedHashMap 的第一个键
【发布时间】:2014-02-04 21:37:05
【问题描述】:

我在一个名为 Yoghurts 的类中有一个 LinkedHashMap

Map<Integer, Integer>French = new LinkedHashMap<Integer, Integer>();

然后我创建了访问器方法,以便可以从另一个类访问该集合

我现在想获取输入的第一个键,但我不确定如何执行此操作。

 int location = Yoghurts.getHashMap().entrySet().iterator().next();

然而这会返回错误不兼容的类型

【问题讨论】:

  • 我们应该如何回答你的问题?
  • 在您的问题标题中您询问如何获得第一个密钥,在您的问题中您询问如何输入它。请让你想要达到的目标更明显
  • @AlekseyIzmailov 很明显他想检索输入的第一个密钥。
  • 没说怎么输入? "我现在想获取输入的第一个键"
  • 我认为专门使用 LinkedHashMap 是可能的?

标签: java linked-list hashmap


【解决方案1】:

问题是您使用的是entrySet(),其成员的类型为Map.Entry&lt;Integer,Integer&gt;。在迭代器的结果上使用getKey(),或者使用map.keySet().iterator().next();

【讨论】:

    【解决方案2】:

    如果您将变量分配给每个方法调用结果,您的错误在哪里会更清楚:

    Map<Integer, Integer> map = Yoghurts.getHashMap();
    Set<Map.Entry<Integer, Integer>> entrySet = map.entrySet();
    Iterator<Map.Entry<Integer, Integer>> iterator = entrySet.iterator();
    Map.Entry<Integer, Integer> entry = iterator.next();
    

    剩下要做的就是从Map.Entry中提取密钥:

    int location = entry.getKey();
    

    请注意,您还在这里将Integer 键拆箱为int,如果键为空(我相信 LinkedHashMap 支持空键),这可能会引发异常。

    【讨论】:

    • 这是不必要的冗长,在这种情况下确实没有帮助。 IDE 将向您显示每个方法调用的类型,并且在任何情况下都清楚错误是什么。但是,您是正确的,基于它的HashMapLinkedHashMap 都允许null 键,并且使用该代码的人需要注意这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    相关资源
    最近更新 更多