I have this Java Map:
JavaScript
x
Map<String, String> map = new HashMap<>();
map.put("//div[@col-id='actualSourceLPName']", "LP4");
map.put("//div[@col-id='actualSourceLPName']", "LP4s");
I want to skip the first one:
JavaScript
for (String key : map.entrySet().stream().skip(1)) {
compareValues(driver, key, map.get(key));
}
But I get error: foreach not applicable to type 'java.util.stream.Stream<java.util.Map.Entry<java.lang.String,java.lang.String>>'
Do you know how I can fix this issue?
Advertisement
Answer
First use a LinkedHashMap if you want it ordered:
JavaScript
Map<String, String> map = new LinkedHashMap<>();
map.put("//div[@col-id='actualSourceLPName']", "LP4");
map.put("//div[@col-id='actualSourceLPName']", "LP4s");
You are trying to iterate a stream which doesn’t work that way. Try this:
JavaScript
map.entrySet().stream().skip(1).forEach(e -> {
compareValues(driver, e.getKey(), e.getValue());
});
Alternatively you can convert your stream to a list. Now your driver variable doesn’t have to be “effectively final”.
JavaScript
for (String key : map.entrySet().stream().skip(1).map(e -> e.getKey()).collect(Collectors.toList())) {
compareValues(driver, key, map.get(key));
}