import java.util.HashMap;
import java.util.Map;
import java.util.SortedSet;
import java.util.TreeSet;
class Ideone {
static class Item implements Comparable<Item> {
int amount;
this.name=name;
this.amount=amount;
}
public int compareTo(Item o) {
if(o.amount<amount)
return -1;
if(o.amount>amount)
return 1;
return o.name.compareTo(name);
}
return name+"|"+amount;
}
}
Map
<String,Item
> itemmap
=new HashMap
<>(); SortedSet<Item> sorted=new TreeSet<>();
void add
(String name,
int amount
) { Item i=itemmap.get(name);
if(i!=null) {
sorted.remove(i);
i.amount+=amount;
} else {
i=new Item(name,amount);
}
itemmap.put(name,i);
sorted.add(i);
}
public static void main
(String[] args
) { Ideone t=new Ideone();
t.add("F",400);
t.add("B",1000);
t.add("xA",500);
t.add("xA",600);
t.add("C",1000);
t.add("D",700);
t.add("E",300);
System.
out.
println("itemmap: "+t.
itemmap); System.
out.
println("sorted: "+t.
sorted); }
}
aW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwppbXBvcnQgamF2YS51dGlsLk1hcDsKaW1wb3J0IGphdmEudXRpbC5Tb3J0ZWRTZXQ7CmltcG9ydCBqYXZhLnV0aWwuVHJlZVNldDsKCmNsYXNzIElkZW9uZSB7CglzdGF0aWMgY2xhc3MgSXRlbSBpbXBsZW1lbnRzIENvbXBhcmFibGU8SXRlbT4gewoJCWZpbmFsIFN0cmluZyBuYW1lOwoJCWludCBhbW91bnQ7CgkJSXRlbShTdHJpbmcgbmFtZSxpbnQgYW1vdW50KXsKCQkJdGhpcy5uYW1lPW5hbWU7CgkJCXRoaXMuYW1vdW50PWFtb3VudDsKCQl9CgkJcHVibGljIGludCBjb21wYXJlVG8oSXRlbSBvKSB7CgkJCWlmKG8uYW1vdW50PGFtb3VudCkKCQkJCXJldHVybiAtMTsKCQkJaWYoby5hbW91bnQ+YW1vdW50KQoJCQkJcmV0dXJuIDE7CgkJCXJldHVybiBvLm5hbWUuY29tcGFyZVRvKG5hbWUpOwoJCX0KCQlwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewoJCQlyZXR1cm4gbmFtZSsifCIrYW1vdW50OwoJCX0KCX0KCQoJTWFwPFN0cmluZyxJdGVtPiBpdGVtbWFwPW5ldyBIYXNoTWFwPD4oKTsKCVNvcnRlZFNldDxJdGVtPiBzb3J0ZWQ9bmV3IFRyZWVTZXQ8PigpOwoJCgl2b2lkIGFkZChTdHJpbmcgbmFtZSxpbnQgYW1vdW50KSB7CgkJSXRlbSBpPWl0ZW1tYXAuZ2V0KG5hbWUpOwoJCWlmKGkhPW51bGwpIHsKCQkJc29ydGVkLnJlbW92ZShpKTsKCQkJaS5hbW91bnQrPWFtb3VudDsKCQl9IGVsc2UgewoJCQlpPW5ldyBJdGVtKG5hbWUsYW1vdW50KTsKCQl9CgkJaXRlbW1hcC5wdXQobmFtZSxpKTsKCQlzb3J0ZWQuYWRkKGkpOwoJfQoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewoJCUlkZW9uZSB0PW5ldyBJZGVvbmUoKTsKCQl0LmFkZCgiRiIsNDAwKTsKCQl0LmFkZCgiQiIsMTAwMCk7CgkJdC5hZGQoInhBIiw1MDApOwoJCXQuYWRkKCJ4QSIsNjAwKTsKCQl0LmFkZCgiQyIsMTAwMCk7CgkJdC5hZGQoIkQiLDcwMCk7CgkJdC5hZGQoIkUiLDMwMCk7CgkJU3lzdGVtLm91dC5wcmludGxuKCJpdGVtbWFwOiAiK3QuaXRlbW1hcCk7CgkJU3lzdGVtLm91dC5wcmludGxuKCJzb3J0ZWQ6ICIrdC5zb3J0ZWQpOwoJfQp9Cg==
itemmap: {B=B|1000, C=C|1000, D=D|700, E=E|300, F=F|400, xA=xA|1100}
sorted: [xA|1100, C|1000, B|1000, D|700, F|400, E|300]