How to Get Values from List of HashMap?
Solution 1
Its still not clear to me why you want a list.
public static Map<Integer, Long> populateMyHashMapFromDB() {
Map<Integer, Long> map = new LinkedHashMap<Integer, Long>();
for (int i = 0; i < 10; i++)
map.put(getIntFromDB(i), getLongFromDB(i));
return map;
}
Map<Integer, Long> map = populateMyHashMapFromDB();
Long value = map.get(key);
This collection isn't designed to give you the key/values pairs easily. I fyou need to this functionality I would suggest using a different structure.
Assuming you have a some bad code you cannot change, you can do
List<Map<Integer, Long>> maps = new ArrayList<Map<Integer, Long>>();
Map<Integer, Long> all = new HashMap<Integer, Long>();
for(Map<Integer, Long> map: maps)
all.putAll(map);
for(Map.Entry<Integer, Long> entry: all.entrySet() {
// do something which each key/value.
}
In this example you don't need a List or a Map.
long[] longs = new long[10];
for (int i = 0; i < 10; i++)
longs[i] = i;
int key = 1;
int num = longs[key];
Solution 2
You iterate over the list to get the maps, and then iterate over their key set:
public static void main(String[] args) throws NoSuchAlgorithmException {
List<Map<Integer, Long>> ListofHash = new ArrayList<Map<Integer,Long>>();
for (int i = 0; i < 10; i++) {
Map<Integer, Long> mMap = new HashMap<Integer, Long>();
mMap.put(Integer.valueOf(i), Long.valueOf(100000000000L + i));
ListofHash.add(mMap);
}
for (Map<Integer, Long> map : ListofHash) {
for (Integer key : map.keySet()) {
System.out.println(map.get(key));
}
}
}
Note: I've also changed a little your code, using Map
instead of HashMap
when possible
Solution 3
I am assuming you are asking how to get it from ArrayList,
ListofHash.get(0).get(Object key);
Object key means whatever Integer key you want
Good Luck!
Solution 4
Something of this effect:
public static Long getValue(Integer key)) {
for (HashMap<Integer, Long> entry : ListofHash) {
if (entry.containsKey(key)) {
return entry.get(key);
}
}
return null;
}
//Retrieve all key/value
for (HashMap<Integer, Long> entry : ListofHash) {
for (Integer key : entry.keySet()) {
System.out.println("Key : " + key + ", value: " + entry.get(key));
}
}
PS Untested.
Solution 5
List<HashMap<Integer, Long>> ListofHash = new ArrayList<HashMap<Integer, Long>>();
for (int i = 0; i < 10; i++) {
HashMap<Integer, Long> mMap = new HashMap<Integer, Long>();
mMap.put(Integer.valueOf(i), Long.valueOf(100000000000L+i));
ListofHash.add(mMap);
}
Comments
-
Ads over 1 year
I have a
List
ofHashMap
's which has key of typeInteger
and value of typeLong
.List<HashMap<Integer, Long>> ListofHash = new ArrayList<HashMap<Integer, Long>>(); for (int i = 0; i < 10; i++) { HashMap<Integer, Long> mMap = new HashMap<Integer, Long>(); mMap.put(Integer.valueOf(i), Long.valueOf(100000000000L+i)); ListofHash.add(mMap); }
Now, how do I retrieve the key and value from the list of
HashMap
?If using
Collection
class is the solution, please enlight me.Update 1:
Actually i am getting the value from the database and putting that into a HashMap
public static List<Map<Integer, Long>> populateMyHashMapFromDB() { List<HashMap<Integer, Long>> ListofHash = new ArrayList<HashMap<Integer, Long>>(); for (int i = 0; i < 10; i++) { HashMap<Integer, Long> mMap = new HashMap<Integer, Long>(); mMap.put(Integer.valueOf(getIntFromDB(i)), Long.valueOf(getLongFromDB(i))); ListofHash.add(mMap); } return ListofHash; }
where getIntFromDB and getLongFromDB can retreive any int and long values respectively.
Now this is where i want to get my values that i got from DB both keys and values
public void getmyDataBaseValues() { List<HashMap<Integer,Long>> ListofHash=populateMyHashMapFromDB(); // This is where i got confused }
ANSWER This is why Peter Lawrey suggested
public class HashMaps { public static void main(String[] args) { // TODO Auto-generated method stub testPrintHashmapValues(putToHashMap()); testPrintHashmapValuesWithList(putToHashMapWithList()); } public static Map<Integer, Long> putToHashMap() { Map<Integer, Long> map = new LinkedHashMap<Integer, Long>(); for (int i = 0; i < 10; i++) { map.put(Integer.valueOf(i), Long.valueOf(200000000000L + i)); } return map; } public static void testPrintHashmapValues(Map<Integer, Long> map) { for (Map.Entry<Integer, Long> entry : map.entrySet()) { System.out.println("key: " + entry.getKey() + " value: " + entry.getValue()); } } public static List<Map<Integer, Long>> putToHashMapWithList() { List<Map<Integer, Long>> listOfHash = new ArrayList<Map<Integer, Long>>(); for (int i = 0; i < 10; i++) { Map<Integer, Long> mMap = new HashMap<Integer, Long>(); mMap.put(Integer.valueOf(i), Long.valueOf(100000000000L + i)); listOfHash.add(mMap); } return listOfHash; } public static void testPrintHashmapValuesWithList( List<Map<Integer, Long>> listOfHash) { for (int i = 0; i < 10; i++) { Map<Integer, Long> map = listOfHash.get(i); for (Map.Entry<Integer, Long> entry : map.entrySet()) { System.out.println(i + " hashMap"); System.out.println("key: " + entry.getKey() + " value: " + entry.getValue()); } } } }
My Task is done even without creating a List.
-
Kevin almost 13 yearsone further improvement is using google guava to declare the list: List<Map<Integer,Long>> listOfHash = newArrayList();
-
Ads almost 13 yearsmay i know what is the difference in using Map and HashMap, and what is complex is the pervious case??? (Just eager to know)
-
Vishy almost 13 yearsMap can be substituted with any Map implementation. Unless you need to use a method only available on HashMap it is better to use an interface. Using a List of Map is more complex than using a single Map as I have shown you in the example, it is not clear why you need a List of them.
-
Vishy almost 13 yearsThis assumes what you are looking for is in the first Map (and that there is a first Map)
-
TeaCupApp almost 13 years@Peter , Totally true! I thought his question was more general about how to access those elements. However Iteration on ListofHash will be a far better option.
-
Vishy almost 13 yearsit appears to me he just needs a
long[10]
which would much simpler. -
Ads almost 13 yearsyep i agree that in the example hashmap is not needed but in my case i get key and value from the database where value is not incremental and we also dont know what the value also. see my update 1 code. hope now it is pretty much clear.
-
Ads almost 13 yearsit seems that i must know the key to get the value right.but i dono the key too since i get both from DB. please see the update 1.
-
Ads almost 13 yearshe he.... sorry!!!! just felt lazy to change after typing... U spoted thank you !!!! ;)
-
Vishy almost 13 years@Adhavan, I have updated my answer. Perhaps you are trying to make things more complicated than they need to be.
-
Ads almost 13 yearsyep.... u r right.... i just confused with list...it can be done using HashMap alone...