gpt4 book ai didi

java - 如何使用 int 索引访问 TreeMap 中的项目?

转载 作者:行者123 更新时间:2023-12-01 17:11:14 25 4
gpt4 key购买 nike

我有一个像这样定义的 TreeMap private TreeMap <String,Enclavament> a_enclavaments; 。我想处理 TreeMap 的每个 Enclavament,所以我做了一个 for 查找来在它们上运行一个方法,这就是我的意思:

for(int i = 0; i < a_enclavaments.size(); i++)
modify(a_enclavaments.get(i));

modify 需要 Enclavament 类中的项目。但是,当我开始时,我收到此错误:

Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
at java.lang.Integer.compareTo(Unknown Source)
at java.util.TreeMap.getEntry(Unknown Source)
at java.util.TreeMap.get(Unknown Source)

我不明白为什么。我读过 java API,上面写着

get(Object key)
Returns the value to which the specified key is mapped, or if this map contains no mapping for the key.

它不是应该从 TreeMap 返回第一个、第二个、第三个...Enclavament 吗?编辑:这可能是因为我将 TreeMap 上的第一个参数设置为字符串并且它必须是整数吗?

最佳答案

Map基于键存储值。键用于定义 Map 数据结构(数组、链表、树等,具体取决于 Map 的实现)中值的位置。了解这一点后,Map 不适用于 index 概念,仅适用于键。

在本例中,您将 String 值设置为键,但尝试使用 Integer 检索数据,异常情况非常清楚:

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer

一种可能的解决方案是将 key 更改为Integer(如果可能)。

如果您想要/需要迭代Map上的值,您可以在Map#values上使用for循环。 :

for (Enclavament enclavement : a_enclavaments.values) {
//do what you want/need
}

如果使用后者,则无需更改 Map 的键类型。

关于java - 如何使用 int 索引访问 TreeMap 中的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23725479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com