fork download
  1. import java.util.HashMap;
  2. import java.util.Map;
  3. import java.util.SortedSet;
  4. import java.util.TreeSet;
  5.  
  6. class Ideone {
  7. static class Item implements Comparable<Item> {
  8. final String name;
  9. int amount;
  10. Item(String name,int amount){
  11. this.name=name;
  12. this.amount=amount;
  13. }
  14. public int compareTo(Item o) {
  15. if(o.amount<amount)
  16. return -1;
  17. if(o.amount>amount)
  18. return 1;
  19. return o.name.compareTo(name);
  20. }
  21. public String toString() {
  22. return name+"|"+amount;
  23. }
  24. }
  25.  
  26. Map<String,Item> itemmap=new HashMap<>();
  27. SortedSet<Item> sorted=new TreeSet<>();
  28.  
  29. void add(String name,int amount) {
  30. Item i=itemmap.get(name);
  31. if(i!=null) {
  32. sorted.remove(i);
  33. i.amount+=amount;
  34. } else {
  35. i=new Item(name,amount);
  36. }
  37. itemmap.put(name,i);
  38. sorted.add(i);
  39. }
  40. public static void main(String[] args) {
  41. Ideone t=new Ideone();
  42. t.add("F",400);
  43. t.add("B",1000);
  44. t.add("xA",500);
  45. t.add("xA",600);
  46. t.add("C",1000);
  47. t.add("D",700);
  48. t.add("E",300);
  49. System.out.println("itemmap: "+t.itemmap);
  50. System.out.println("sorted: "+t.sorted);
  51. }
  52. }
  53.  
Success #stdin #stdout 0.11s 36492KB
stdin
Standard input is empty
stdout
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]