[英]How to iterate through objects in Hashmap
I am having 我有
Map<String, List<Attribute>> binList = new HashMap<String, List<Attribute>>();
I want to iterate through each values in list By doing this I am able to get the key and its entire values.But how to get each single value for a key. 我想遍历列表中的每个值,这样就能得到键及其整个值。但是,如何获得键的每个值。
BinList {3=[index=0 {from=1.3,to=2.42}, index=1 {from=2.42,to=3.54}, index=2 {from=3.54,to=4.66}, index=3 {from=4.66,to=5.78}, index=4 {from=5.78,to=6.9}], 2=[index=0 {from=2.3,to=2.76}, index=1 {from=2.76,to=3.2199999999999998}, index=2 {from=3.2199999999999998,to=3.6799999999999997}, index=3 {from=3.6799999999999997,to=4.14}, index=4 {from=4.14,to=4.6}], 1=[index=0 {from=4.3,to=5.02}, index=1 {from=5.02,to=5.739999999999999}, index=2 {from=5.739999999999999,to=6.459999999999999}, index=3 {from=6.459999999999999,to=7.179999999999999}, index=4 {from=7.179999999999999,to=7.899999999999999}], 4=[index=0 {from=0.3,to=0.76}, index=1 {from=0.76,to=1.2200000000000002}, index=2 {from=1.2200000000000002,to=1.6800000000000002}, index=3 {from=1.6800000000000002,to=2.14}, index=4 {from=2.14,to=2.6}]}
Map<String, List<Attribute>> binList = new HashMap<String, List<Attribute>>();
System.out.println("BinList "+binList);
//Iterating binList
while (it.hasNext()) {
Map.Entry pairs = (Map.Entry)it.next();
System.out.println("->>>>"+pairs.getKey() + " = " + pairs.getValue());
}
OUTPUT 输出值
->>>>3 = [index=0 {from=1.3,to=2.42}, index=1 {from=2.42,to=3.54}, index=2 {from=3.54,to=4.66}, index=3 {from=4.66,to=5.78}, index=4 {from=5.78,to=6.9}]
->>>>2 = [index=0 {from=2.3,to=2.76}, index=1 {from=2.76,to=3.2199999999999998}, index=2 {from=3.2199999999999998,to=3.6799999999999997}, index=3 {from=3.6799999999999997,to=4.14}, index=4 {from=4.14,to=4.6}]
->>>>1 = [index=0 {from=4.3,to=5.02}, index=1 {from=5.02,to=5.739999999999999}, index=2 {from=5.739999999999999,to=6.459999999999999}, index=3 {from=6.459999999999999,to=7.179999999999999}, index=4 {from=7.179999999999999,to=7.899999999999999}]
->>>>4 = [index=0 {from=0.3,to=0.76}, index=1 {from=0.76,to=1.2200000000000002}, index=2 {from=1.2200000000000002,to=1.6800000000000002}, index=3 {from=1.6800000000000002,to=2.14}, index=4 {from=2.14,to=2.6}]
How to iterate through values 如何遍历值
id =3
index=0 {from=1.3,to=2.42}
index=1 {from=2.42,to=3.54}
.
.
You have a Map
that contains values that are instances of List<Attribute>
. 您有一个
Map
,其中包含作为List<Attribute>
实例的值。
If you want to iterate though those lists and display their contents... you'd need to iterate through those lists; 如果要遍历这些列表并显示其内容...,则需要遍历这些列表。
for (Map.Entry<String, List<Attribute>> entry : binList.entrySet())
{
System.out.println("Key: " + entry.getKey());
// Each value is a List<Attribute>, so you can iterate though that as well
for (Attribute a : entry.getValue())
{
// This assumes Attribute.toString() prints something useful
System.out.println("Attribute: " + a);
}
}
Edit to add: You show an Iterator
in your example, and you're using raw types instead of generics. 编辑添加:在示例中显示一个
Iterator
,并且您使用的是原始类型而不是泛型。 The above does away with the Iterator
but presumably this is the correct version of what you were trying to do using Iterator
s. 上面的方法消除了
Iterator
但是大概这是您尝试使用Iterator
进行操作的正确版本。 The "for-each" loops shown above are equivalent: 上面显示的“ for-each”循环是等效的:
Iterator<Map.Entry<String, List<Attribute>>> it = binList.entrySet().iterator();
while (it.hasNext())
{
Map.Entry<String, List<Attribute>> entry = it.next();
System.out.println("Key: " + entry.getKey());
// Each value is a List<Attribute>, so you can iterate though that as well
Iterator<Attribute> it2 = entry.getValue().iterator();
while (it2.hasNext())
{
Attribute a = it2.next();
// This assumes Attribute.toString() prints something useful
System.out.println("Attribute: " + a);
}
}
try with foreach style in java 尝试使用Java中的foreach样式
for (String entryKey:binList.keySet()){
for (List<Attribute> attribute:binList.get(entryKey)){
attribute.from
attribute.to
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.