[Kotlin]Mapソート


HashMapまたはMapのソート方法
  • LinkedHashMapを使用して
  • をソート
  • TreeMapを使用して
  • をソート
  • リストを使用して
  • をソート
  • SortedMapソート
  • LinkedHashMapソートの使用
    LinkedHashMapは、Mapに順序が入力されていることを確認するクラスです.HashMapを所望の順序で並べ替え、LinkedHashMapをこの順序で再入力すると、並べ替え順に出力できます.
    Sort by keyMap.Entryをリストにインポートし、キー値をソートしてLinkedHashMapにソート順に追加します.コードは次のとおりです.
    fun sortMapByKey(map: Map<String, String>): LinkedHashMap<String, String> {
        val entries = LinkedList(map.entries)
    
        entries.sortBy { it.key }
    
        val result = LinkedHashMap<String, String>()
        for(entry in entries) {
            result[entry.key] = entry.value
        }
    
        return result
    }
    
    fun main() {
        val map = LinkedHashMap<String, String>()
        map["Korea"] = "Seoul"
        map["Japan"] = "Tokyo"
        map["America"] = "New york"
        map["England"] = "London"
        map["Canada"] = "Ottawa"
    
        val sortedMap = sortMapByKey(map)
    
        // key(String)에 따른 정렬
        for((key, value) in sortedMap.entries) {
            println("Key : $key, value : $value")
        }
    }
    結果(Key昇順)
    Key : America, value : New york
    Key : Canada, value : Ottawa
    Key : England, value : London
    Key : Japan, value : Tokyo
    Key : Korea, value : Seoul
    Sort by ValueMap.Entryをリストにインポートし、値でソートし、LinkedHashMapにソート順に追加します.コードは次のとおりです.
    fun sortMapByKey(map: Map<String, String>): LinkedHashMap<String, String> {
        val entries = LinkedList(map.entries)
    
        entries.sortBy { it.value }
    
        val result = LinkedHashMap<String, String>()
        for(entry in entries) {
            result[entry.key] = entry.value
        }
    
        return result
    }
    
    fun main() {
        val map = LinkedHashMap<String, String>()
        map["Korea"] = "Seoul"
        map["Japan"] = "Tokyo"
        map["America"] = "New york"
        map["England"] = "London"
        map["Canada"] = "Ottawa"
    
        val sortedMap = sortMapByKey(map)
    
        // key(String)에 따른 정렬
        for((key, value) in sortedMap.entries) {
            println("Key : $key, value : $value")
        }
    }
    結果(価値の増加)
    Key : England, value : London
    Key : America, value : New york
    Key : Canada, value : Ottawa
    Key : Korea, value : Seoul
    Key : Japan, value : Tokyo
    TreeMapソートの使用TreeMapは、アイテムの追加時に設定されたComparatorごとにソートおよび格納されるクラスである.したがって、値を追加した後に並べ替える必要はありません.次のコードのようにTreeMapを作成できます.パラメータを指定しない場合は、デフォルトでkeyソートが使用されます.
    map = TreeMap<String, String>()
    map["Korea"] = "Seoul"
    map["Japan"] = "Tokyo"
    map["America"] = "New york"
    map["England"] = "London"
    map["Canada"] = "Ottawa"
    
    // key(String)에 따른 정렬
    for((key, value) in map.entries) {
        println("Key : $key, value : $value")
    }
    結果(キーの昇順)
    Key : America, value : New york
    Key : Canada, value : Ottawa
    Key : England, value : London
    Key : Japan, value : Tokyo
    Key : Korea, value : Seoul
    必要に応じてcomparatorを指定してソートすることもできます.次のようにします.ただし、TreeMapは値をソートしないので、キーをソートするだけです.
    map = TreeMap<String, String>(compareBy<String?> { it }.reversed())
    map["Korea"] = "Seoul"
    map["Japan"] = "Tokyo"
    map["America"] = "New york"
    map["England"] = "London"
    map["Canada"] = "Ottawa"
    
    // key(String)에 따른 정렬
    for((key, value) in map.entries) {
        println("Key : $key, value : $value")
    }
    結果(keyベースの降順)
    Key : Korea, value : Seoul
    Key : Japan, value : Tokyo
    Key : England, value : London
    Key : Canada, value : Ottawa
    Key : America, value : New york
    リスト・ソートの使用
    鍵または値をListにインポートしてソートすることもできます.2つのタイプのうち1つだけをソートする場合は、次の方法を使用します.
    Sort by key
    次のコードは、キーを含むリストを昇順に並べます.
    val map = HashMap<String, String>()
    map["Korea"] = "Seoul"
    map["Japan"] = "Tokyo"
    map["America"] = "New york"
    map["England"] = "London"
    map["Canada"] = "Ottawa"
    
    val keyList = ArrayList(map.keys)
    
    // comparator를 사용한 정렬
    // keyList.sortWith(compareBy<String?> { it }.reversed())
    
    // default 정렬
    keyList.sort()
    
    for(key in keyList) {
        println("Key : $key")
    }
    結果(Key昇順)
    Key : America
    Key : Canada
    Key : England
    Key : Japan
    Key : Korea
    上記のコードはsort()を使用してデフォルトのソートを実行しますが、sortWith関数を使用してcomparatorとしてパラメータを使用する場合は、必要な条件を使用してソートを実行できます.
    Sort by Value
    次のコードは、Valueを含むリストを昇順に並べています.
    val map = HashMap<String, String>()
    map["Korea"] = "Seoul"
    map["Japan"] = "Tokyo"
    map["America"] = "New york"
    map["England"] = "London"
    map["Canada"] = "Ottawa"
    
    val valueList = ArrayList(map.values)
    
    // comparator를 사용한 정렬
    // valueList.sortWith(compareBy<String?> { it }.reversed())
    
    // default 정렬
    valueList.sort()
    
    for(value in valueList) {
        println("Value : $value")
    }
    結果(価値の増加)
    Value : London
    Value : New york
    Value : Ottawa
    Value : Seoul
    Value : Tokyo
    sortedMapソートの使用
    TOSortedMap()関数を使用してMapをソートできます.sortedMapはキーソートのMapであり、Comparatorを使用して必要な条件を指定することもできます.
    val map = HashMap<String, String>()
    map["Korea"] = "Seoul"
    map["Japan"] = "Tokyo"
    map["America"] = "New york"
    map["England"] = "London"
    map["Canada"] = "Ottawa"
    
    val sortedMap = map.toSortedMap()
    
    // Comparator를 인자로 주어 조건 명시
    // val sortedMap = map.toSortedMap(compareBy<String> { it }.reversed())
    
    for((key, value) in sortedMap) {
        println("Key : $key, Value : $value")
    }
    結果(Key昇順)
    Key : America, Value : New york
    Key : Canada, Value : Ottawa
    Key : England, Value : London
    Key : Japan, Value : Tokyo
    Key : Korea, Value : Seoul
    リファレンス
    Java Mapをソートする様々な方法
    間違った部分にコメントを残したら修正します…!!