2015-06-03 3 views
1

У меня есть эта карта:Как отсортировать стоимость карты?

var temp= { 
    'A' : 3, 
    'B' : 1, 
    'C' : 2 
}; 

Как сортировать значения отображения (по убыванию). Я знаю, я могу использовать temp.values.toList() .. sort().

Но я хочу разобраться в контексте ключей, как это:

var temp= { 
    'B' : 1, 
    'C' : 2 
    'A' : 3, 
}; 
+1

Похоже DUP из http://stackoverflow.com/questions/29628713 –

+0

возможного дубликата [Как отсортировать значения в карте?] (Http://stackoverflow.com/вопросы/29628713/как-на-рода-карта-значение) – Ezzored

ответ

1

Этот пример использует пользовательские функции сравнения, что делает sort() отсортировать ключи по значению. Затем ключи и значения вставляются в LinkedHashMap, потому что этот вид карты гарантирует сохранение заказа. В основном то же, что и https://stackoverflow.com/a/29629447/217408, но настроено для вашего прецедента.

import 'dart:collection'; 

void main() { 
    var temp= { 
    'A' : 3, 
    'B' : 1, 
    'C' : 2 
    }; 

    var sortedKeys = temp.keys.toList(growable:false) 
    ..sort((k1, k2) => temp[k1].compareTo(temp[k2])); 
    LinkedHashMap sortedMap = new LinkedHashMap 
     .fromIterable(sortedKeys, key: (k) => k, value: (k) => temp[k]); 
    print(sortedMap); 
} 

Попробуйте на DartPad

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