2013-10-08 5 views
1
map = new LinkedHashMap<String, String>(); 
list = new ArrayList<HashMap<String, String>>(); 

map.put("id", id); 
map.put("amt", amt); 

list.add(map); 

Как отсортировать список по возрастанию amt. Я не смог этого сделать. Я бы очень признателен за любую помощь.сортировать arraylist с ключом по возрастанию

Я добавляю id, amt в петлю. Как сортировать с ключом как amt?

id=1,2,3,4,5 
amt=1000,33333,77,9087,5432 
+1

Просьба уточнить, что именно вы хотите. Я не могу сделать голову или хвост из вашего заявления о проблеме. – Prateek

+2

Должно быть таким же, как http://stackoverflow.com/questions/922528/how-to-sort-map-values-by-key-in-java Надеюсь, это полезно –

+0

Привет, Prateek.Its цикл for со значениями -> id и количество, как показано выше, и его добавлено в список arraylist ->. Я хотел бы отсортировать массив в порядке возрастания и получить соответствующий идентификатор для того же. Спасибо за ваше время. – jason

ответ

3

Просто используйтеTreeMap:

Map<String, String> map = new TreeMap<String, String>(); 
List<Map<String, String>> list = new ArrayList<Map<String, String>>(); 

map.put("id", "id"); 
map.put("amd", "amd"); 

list.add(map); 

System.out.println(list); 

Выход:

[{amd=amd, id=id}] 

Теперь, если Id находится в верхнем регистре и amd в нижнем регистре, то вы должны переопределить поведение по умолчанию TreeMap используя Comparator в конструкторе (для того, чтобы сортировка для ключей строк правильно):

Map<String, String> map = new TreeMap<String, String>(new Comparator<String>() { 
     @Override 
     public int compare(String o1, String o2) { 
      return o1.toLowerCase().compareTo(o2.toLowerCase()); 
     } 
    }); 

Look to the TreeMap API Documentation

+0

Где вы указываете способ сортировки w.r.t в amt, а не id? – jason

+0

также у меня есть \t \t map = new LinkedHashMap (); и list = new ArrayList >(); – jason

+1

@jason Строки сортируются лексикографически, так как a приходит до того, как amt приходит до id. – arynaq

0

Ваш вопрос не очень понятно, как в какой-то момент вы, кажется, уже сортировка списка с только один элемент (ваша карта). Но я предполагаю, что вы хотите отсортировать ключи на этой карте (либо внутри карты, либо после добавления их в список).

Однако для сортировки списков у вас есть Collections.sort(), который может полагаться как на естественный порядок (если элементы реализуют Comparable), либо на заказ Comparator. Кроме того, вы можете взглянуть на SortedSet (и на реализацию TreeSet), если вы хотите, чтобы заказ поддерживался при добавлении/удалении элементов.

Для сохранения карты с помощью упорядоченных ключей у вас есть SortMap (с заметной реализацией: TreeMap), которая обеспечит сохранение порядка в любой момент - вы можете добавлять элементы в случайном порядке, и всякий раз, когда вы повторяете, вы будете получите ключи в порядке. Опять же заказ может быть естественным (предоставляется Comparable.compareTo), или вы можете предоставить заказ, выполнив интерфейс Comparator.

Смежные вопросы