The ordering will always depend on the specific map
implementation.
Using Java 8 you can use either of
these:
map.forEach((k,v) -> {
System.out.println(k + ":" + v);
});
Or:
map.entrySet().forEach((e)
-> {
System.out.println(e.getKey() + " : " + e.getValue());
});
The result will be
the same (same order). The entrySet backed by the map so you are getting the same order.
The second one is handy as it allows you to use lambdas, e.g. if you want only to print
only Integer objects that are greater than
5:
map.entrySet()
.stream()
.filter(e-> e.getValue() > 5)
.forEach(System.out::println);
The
code below shows iteration through LinkedHashMap and normal HashMap (example). You will
see difference in the
order:
public class HMIteration
{
public static void main(String[] args)
{
Mapreadability="57">
LinkedHashMap (1):
10 (#=10):10, 9 (#=9):9, 8 (#=8):8, 7 (#=7):7, 6 (#=6):6, 5
(#=5):5, 4 (#=4):4, 3 (#=3):3, 2 (#=2):2, 1 (#=1):1, 0 (#=0):0,
LinkedHashMap (2):
10 : 10, 9 : 9, 8 : 8, 7 : 7, 6 : 6, 5 : 5, 4 : 4, 3 : 3, 2 : 2, 1 : 1, 0 :
0,
HashMap (1):
0 (#:0):0, 1 (#:1):1, 2 (#:2):2, 3 (#:3):3, 4 (#:4):4, 5 (#:5):5, 6
(#:6):6, 7 (#:7):7, 8 (#:8):8, 9 (#:9):9, 10 (#:10):10,
HashMap (2):
0 : 0, 1 : 1, 2 : 2, 3 :
3, 4 : 4, 5 : 5, 6 : 6, 7 : 7, 8 : 8, 9 : 9, 10 :
10,
No comments:
Post a Comment