Reputation: 6139
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}
.
.
Upvotes: 0
Views: 6297
Reputation: 76898
You have a Map
that contains values that are instances of 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. The above does away with the Iterator
but presumably this is the correct version of what you were trying to do using Iterator
s. The "for-each" loops shown above are equivalent:
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);
}
}
Upvotes: 7
Reputation: 75
try with foreach style in java
for (String entryKey:binList.keySet()){
for (List<Attribute> attribute:binList.get(entryKey)){
attribute.from
attribute.to
}
}
Upvotes: 1