/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
class Ideone {
public static void main
(String[] args
) {
// create an empty array list with an initial capacity
ReorderingList rlist = new ReorderingList();
// use add() method to add elements in the list
rlist.add("bob");
rlist.add("pat");
rlist.add("tan");
rlist.add("bob");
rlist.add("mat");
rlist.add("cat");
rlist.add("dog");
rlist.add("cat");
List<String> arrlist = rlist.asList();
// let us print all the elements available in list
for (String number
: arrlist
) { System.
out.
println("String = " + number
); }
// retrieves element at 4th postion
System.
out.
println("Retrieved element is = " + retval
); }
public static class ReorderingList {
private LinkedHashMap
<String, Integer
> items
= new LinkedHashMap
<String, Integer
>();
public void add
(String item
) { if (value == null) value = 0;
value++;
items.put(item, value);
}
public List<String> asList() {
List<String> result = new ArrayList<String>();
for(Map.
Entry<String, Integer
> entry
: items.
entrySet()) { for (int i=0; i < entry.getValue(); i++) {
result.add(entry.getKey());
}
}
return result;
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgpjbGFzcyBJZGVvbmUgewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewoKICAgICAgICAvLyBjcmVhdGUgYW4gZW1wdHkgYXJyYXkgbGlzdCB3aXRoIGFuIGluaXRpYWwgY2FwYWNpdHkKICAgICAgICBSZW9yZGVyaW5nTGlzdCBybGlzdCA9IG5ldyBSZW9yZGVyaW5nTGlzdCgpOwoKICAgICAgICAvLyB1c2UgYWRkKCkgbWV0aG9kIHRvIGFkZCBlbGVtZW50cyBpbiB0aGUgbGlzdAogICAgICAgIHJsaXN0LmFkZCgiYm9iIik7CiAgICAgICAgcmxpc3QuYWRkKCJwYXQiKTsKICAgICAgICBybGlzdC5hZGQoInRhbiIpOwogICAgICAgIHJsaXN0LmFkZCgiYm9iIik7CiAgICAgICAgcmxpc3QuYWRkKCJtYXQiKTsKICAgICAgICBybGlzdC5hZGQoImNhdCIpOwogICAgICAgIHJsaXN0LmFkZCgiZG9nIik7CiAgICAgICAgcmxpc3QuYWRkKCJjYXQiKTsKCgkJTGlzdDxTdHJpbmc+IGFycmxpc3QgPSBybGlzdC5hc0xpc3QoKTsKCiAgICAgICAgLy8gbGV0IHVzIHByaW50IGFsbCB0aGUgZWxlbWVudHMgYXZhaWxhYmxlIGluIGxpc3QKICAgICAgICBmb3IgKFN0cmluZyBudW1iZXIgOiBhcnJsaXN0KSB7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiU3RyaW5nID0gIiArIG51bWJlcik7CiAgICAgICAgfSAKCiAgICAgICAgLy8gcmV0cmlldmVzIGVsZW1lbnQgYXQgNHRoIHBvc3Rpb24KICAgICAgICBTdHJpbmcgcmV0dmFsPWFycmxpc3QuZ2V0KDMpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiUmV0cmlldmVkIGVsZW1lbnQgaXMgPSAiICsgcmV0dmFsKTsgCiAgICB9CiAgICAKICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgUmVvcmRlcmluZ0xpc3QgewogICAgCXByaXZhdGUgTGlua2VkSGFzaE1hcDxTdHJpbmcsIEludGVnZXI+IGl0ZW1zID0KICAgIAkgICAgbmV3IExpbmtlZEhhc2hNYXA8U3RyaW5nLCBJbnRlZ2VyPigpOwogICAgCQogICAgCXB1YmxpYyB2b2lkIGFkZChTdHJpbmcgaXRlbSkgewogICAgCQlJbnRlZ2VyIHZhbHVlID0gaXRlbXMuZ2V0KGl0ZW0pOwogICAgCQlpZiAodmFsdWUgPT0gbnVsbCkgdmFsdWUgPSAwOwogICAgCQl2YWx1ZSsrOwogICAgCQlpdGVtcy5wdXQoaXRlbSwgdmFsdWUpOwogICAgCX0KICAgIAkKICAgIAlwdWJsaWMgTGlzdDxTdHJpbmc+IGFzTGlzdCgpIHsKICAgIAkJTGlzdDxTdHJpbmc+IHJlc3VsdCA9IG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpOwogICAgCQlmb3IoTWFwLkVudHJ5PFN0cmluZywgSW50ZWdlcj4gZW50cnkgOiBpdGVtcy5lbnRyeVNldCgpKSB7CiAgICAJCQlmb3IgKGludCBpPTA7IGkgPCBlbnRyeS5nZXRWYWx1ZSgpOyBpKyspIHsKICAgIAkJCQlyZXN1bHQuYWRkKGVudHJ5LmdldEtleSgpKTsKICAgIAkJCX0KICAgIAkJfQogICAgCQlyZXR1cm4gcmVzdWx0OwogICAgCX0KICAgIH0KfSA=