Java 如何使用整型索引从树状图访问项目?
我有一个树映射,定义如下:privateJava 如何使用整型索引从树状图访问项目?,java,treemap,Java,Treemap,我有一个树映射,定义如下:privateTreeMap a_enclavents。我想处理TreeMap的每个Enclave,所以我想在它们上运行一个方法,这就是我的意思: for(int i = 0; i < a_enclavaments.size(); i++) modify(a_enclavaments.get(i)); 我不明白为什么。我读过JavaAPI,它说 get(Object key) Returns the value to which the spe
TreeMap a_enclavents代码>。我想处理TreeMap的每个Enclave,所以我想在它们上运行一个方法,这就是我的意思:
for(int i = 0; i < a_enclavaments.size(); i++)
modify(a_enclavaments.get(i));
我不明白为什么。我读过JavaAPI,它说
get(Object key)
Returns the value to which the specified key is mapped, or if this map contains no mapping for the key.
它不是应该先返回第一个,然后返回第二个,然后返回第三个。。。树上的厕所?
编辑:这可能是因为树映射上的第一个参数设置为字符串,并且必须是整数吗?s根据键存储一个值。键用于定义值在映射
数据结构中的位置(数组、链表、树等,具体取决于映射
的实现)。知道了这一点,Map
就不能使用index
概念,只能使用键
在本例中,您将字符串
值设置为键,但尝试使用整数
检索数据,异常非常明显:
java.lang.ClassCastException
:java.lang.String
不能强制转换为java.lang.Integer
一种可能的解决方案是将键改为Integer
(如果可能)
如果您想要/需要迭代映射上的值,您可以使用for
循环:
如果使用后者,则无需更改映射的键类型
存储基于键的值。键用于定义值在映射
数据结构中的位置(数组、链表、树等,具体取决于映射
的实现)。知道了这一点,Map
就不能使用index
概念,只能使用键
在本例中,您将字符串
值设置为键,但尝试使用整数
检索数据,异常非常明显:
java.lang.ClassCastException
:java.lang.String
不能强制转换为java.lang.Integer
一种可能的解决方案是将键改为Integer
(如果可能)
如果您想要/需要迭代映射上的值,您可以使用for
循环:
如果使用后者,则无需更改映射的键类型
您正试图根据映射的键类型访问不存在的条目(即,在传递整数
时,您正试图查找字符串
键)
在内部,映射试图将您传入的内容强制转换为您正在搜索的键,以匹配映射定义为接受的键。字符串
无法强制转换为整数
,因此出现异常
您似乎只想迭代地图的内容。这可以通过以下方法实现:
for(Map.Entry:a_enclavement.entrySet()){
修改(entry.getValue());
}
A是地图的每个键-值对的表示形式,便于迭代。如果要对地图的所有键或所有值执行操作,则这将是您希望从地图中获取的对象(如,A_enclament.entrySet()
).根据映射的键类型,您试图访问一个不存在的条目(也就是说,当传入一个整数时,您试图查找一个字符串键)
在内部,映射试图将您传入的内容强制转换为您正在搜索的键,以匹配映射定义为接受的键。字符串
无法强制转换为整数
,因此出现异常
您似乎只想迭代地图的内容。这可以通过以下方法实现:
for(Map.Entry:a_enclavement.entrySet()){
修改(entry.getValue());
}
A是地图的每个键-值对的表示形式,便于迭代。如果要对地图的所有键或所有值执行操作,则这将是您希望从地图中获取的对象(如,A_enclavent.entrySet()
)。为什么这样认为?请查看modify()
接受整数而不是字符串的方法TreeMap
是键值对。您的键是字符串,您正在传递一个int…TreeMap不是一个有序集合,因此您不需要索引来访问其中的值。问题是-如果您想迭代,为什么您的数据在TreeMap
中并由字符串
键入r它?为什么是TreeMap
以及为什么是那些特定的键?如果你能正确地回答这个问题,你要么会得到一个不同的数据结构(一个排序的列表
?),要么使用不同的键(例如整数
,如果你的键是稀疏的),或者使用一个简单的for-each循环在映射上迭代。您为什么会这样认为?请查看modify()
接受整数而不是字符串的方法TreeMap
是键值对。您的键是字符串,您正在传递一个int…TreeMap不是一个有序集合,因此您不需要索引来访问其中的值。问题是-如果您想迭代,为什么您的数据在TreeMap
中并由字符串
键入r它?为什么是TreeMap
以及为什么是那些特定的键?如果你能正确地回答这个问题,你要么会得到一个不同的数据结构(一个排序的列表
?),要么使用不同的键(例如整数
,如果你的键是稀疏的),或者使用一个简单的for each循环来迭代映射。这个家伙只是想迭代值。这是一个简单的任务,不是吗?或者他可能使用了一个错误的集合来实现他想要实现的目标。是的,这就是我所想的…所以看起来我要么将键更改为整数,要么使用ge
get(Object key)
Returns the value to which the specified key is mapped, or if this map contains no mapping for the key.
for (Enclavament enclavement : a_enclavaments.values) {
//do what you want/need
}
for(Map.Entry<String, Enclavement> entry : a_enclavement.entrySet()) {
modify(entry.getValue());
}