user22261:
Decir que tengo un mapa de inventario:
Map<String, Integer> inventory = new TreeMap<>()
y quiero ordenar el inventario por el último carácter de la cadena, ¿cómo voy a hacer esto con un comparador? ¿Cómo voy a manejar los errores si es una cadena vacía?
pero_hero :
puede definir un comparador simple:
Comparator<String> comp = Comparator.comparing(s -> s.length() > 0 ? s.substring(s.length()-1) : "");
entonces se puede crear una instancia de un mapa de árbol con el que comparador:
Map<String, Integer> map = new TreeMap<>(comp);
map.put("xxxa", 11);
map.put("pppb", 2);
map.put("lllc", 3);
map.put("iiid", 3);
para obtener este resultado:
{xxxa=11, pppb=2, lllc=3, iiid=3}