/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main
(String[] args
) { List
<LinkedHashMap
<String, String
>> haystack
= new ArrayList
<>();
LinkedHashMap
<String, String
> currentHashMap
= new LinkedHashMap
<String, String
>(); currentHashMap.put("id","12345");
currentHashMap.put("firstName","John");
currentHashMap.put("lastName", "Doe");
haystack.add(currentHashMap);
currentHashMap
= new LinkedHashMap
<String, String
>(); currentHashMap.put("id","54321");
currentHashMap.put("firstName","Jack");
currentHashMap.put("lastName", "Sparrow");
haystack.add(currentHashMap);
TreeSet<String> result = searchWithinCollection(haystack, "12345", "id");
System.
out.
println("result = " + result
); }
private static TreeSet
<String
> searchWithinCollection
(List
<LinkedHashMap
<String, String
>> haystack,
String needle,
String needleKey
) {
TreeSet<String> returnValueSet = new TreeSet<>();
for (Map
<String, String
> mappedData
: haystack
) { String value
= mappedData.
get(needleKey
); if (needle.equals(value)) {
returnValueSet.addAll(mappedData.values());
}
}
return returnValueSet;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgICAgICBMaXN0PExpbmtlZEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+PiBoYXlzdGFjayA9IG5ldyBBcnJheUxpc3Q8PigpOwoKICAgICAgICBMaW5rZWRIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBjdXJyZW50SGFzaE1hcCA9IG5ldyBMaW5rZWRIYXNoTWFwPFN0cmluZywgU3RyaW5nPigpOwogICAgICAgIGN1cnJlbnRIYXNoTWFwLnB1dCgiaWQiLCIxMjM0NSIpOwogICAgICAgIGN1cnJlbnRIYXNoTWFwLnB1dCgiZmlyc3ROYW1lIiwiSm9obiIpOwogICAgICAgIGN1cnJlbnRIYXNoTWFwLnB1dCgibGFzdE5hbWUiLCAiRG9lIik7CgogICAgICAgIGhheXN0YWNrLmFkZChjdXJyZW50SGFzaE1hcCk7CgogICAgICAgIGN1cnJlbnRIYXNoTWFwID0gbmV3IExpbmtlZEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+KCk7CiAgICAgICAgY3VycmVudEhhc2hNYXAucHV0KCJpZCIsIjU0MzIxIik7CiAgICAgICAgY3VycmVudEhhc2hNYXAucHV0KCJmaXJzdE5hbWUiLCJKYWNrIik7CiAgICAgICAgY3VycmVudEhhc2hNYXAucHV0KCJsYXN0TmFtZSIsICJTcGFycm93Iik7CgogICAgICAgIGhheXN0YWNrLmFkZChjdXJyZW50SGFzaE1hcCk7CgoKICAgICAgICBUcmVlU2V0PFN0cmluZz4gcmVzdWx0ID0gc2VhcmNoV2l0aGluQ29sbGVjdGlvbihoYXlzdGFjaywgIjEyMzQ1IiwgImlkIik7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJyZXN1bHQgPSAiICsgcmVzdWx0KTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBUcmVlU2V0PFN0cmluZz4gc2VhcmNoV2l0aGluQ29sbGVjdGlvbihMaXN0PExpbmtlZEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+PiBoYXlzdGFjaywgU3RyaW5nIG5lZWRsZSwgU3RyaW5nIG5lZWRsZUtleSkgewoKICAgICAgICBUcmVlU2V0PFN0cmluZz4gcmV0dXJuVmFsdWVTZXQgPSBuZXcgVHJlZVNldDw+KCk7CgogICAgICAgIGZvciAoTWFwPFN0cmluZywgU3RyaW5nPiBtYXBwZWREYXRhIDogaGF5c3RhY2spIHsKICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gbWFwcGVkRGF0YS5nZXQobmVlZGxlS2V5KTsKICAgICAgICAgICAgaWYgKG5lZWRsZS5lcXVhbHModmFsdWUpKSB7CiAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZVNldC5hZGRBbGwobWFwcGVkRGF0YS52YWx1ZXMoKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiByZXR1cm5WYWx1ZVNldDsKICAgIH0KfQ==