【Kotlin/Android Studio】配列(list)をソート(並び替え)する方法!sort/sortBy/sortWith/reversed

【Kotlin/Android Studio】配列(list)をソート(並び替え)する方法!sort/sortBy/sortWith/reversed

この記事からわかること

  • Kotlin/Android Studio配列(リスト)を並び替えする方法
  • sorted/sortメソッド違い使い方
  • MutableListの並び替え方法
  • reversed/reverse降順にする
  • sortedBy/sortByオブジェクトを並び替える
  • sortedWith/sortWithで並び替えの規則を指定

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

配列の並び替え:sorted

Kotlinで配列(リスト)を並び替えするにはsortedメソッドを使用します。数値であれば昇順で自動で並び替えたリストを新しく生成し返します。

var list = listOf(10,4,5,1,2,7,9)
var sortedList = list.sorted()
print(sortedList) // [1, 2, 4, 5, 7, 9, 10]

文字列を並び替えることも可能です。

var list = listOf("G","E","C","B","A","F","D")
var sortedList = list.sorted()
print(sortedList) // [A, B, C, D, E, F, G]

MutableListの場合:sort

リストがミュータブル(可変)であればsortメソッドを使用することができます。このメソッドは新しいリストを生成せず呼び出したリストを並び替えます

var list = mutableListOf(10,4,5,1,2,7,9)
list.sort()
print(list) // [1, 2, 4, 5, 7, 9, 10]

ミュータブルでもsortedメソッドは使用することができますがイミュターブルにリストにはsortメソッドは使用できません。

var list = mutableListOf(10,4,5,1,2,7,9)
var sortedList = list.sorted()
print(sortedList) // [1, 2, 4, 5, 7, 9, 10]

降順にする:reversed/reverse

リストの並び順を逆にするにはreversedメソッドを使用します。このメソッドは単純に現在の並び順を逆にするメソッドなので降順に並び替えるメソッドではないので注意してください。そのため降順に並び替えたい場合はsortedで先に昇順に並び替える必要があります。

var list = listOf(10,4,5,1,2,7,9)
var sortedList = list.sorted().reversed()
print(sortedList) // [10, 9, 7, 5, 4, 2, 1]

MutableListの場合

ミュータブルの場合はreverseメソッドが使用できるようになります。

var list = mutableListOf(10,4,5,1,2,7,9)
list.sort()
list.reverse()
print(list) // [10, 9, 7, 5, 4, 2, 1]

オブジェクトを並び替える:sortedBy/sortBy

リストの中身が単一のデータ型ではなくオブジェクトの場合sortedByメソッドを使用します。引数に並び替え対象のプロパティを指定します。

val users = listOf(
    User("ame", 25),
    User("mahiro", 30),
    User("takeru", 20)
)

val sortedByName = users.sortedBy { it.name }
val sortedByAge = users.sortedBy { it.age }

print(sortedByName) // [User(name=ame, age=25), User(name=mahiro, age=30), User(name=takeru, age=20)]
print(sortedByAge)  // [User(name=takeru, age=20), User(name=ame, age=25), User(name=mahiro, age=30)]

MutableListの場合

ミュータブルの場合はsortByメソッドが使用できるようになります。

val users = mutableListOf(
    User("ame", 25),
    User("mahiro", 30),
    User("takeru", 20)
)

users.sortBy { it.name }
print(users)     // [User(name=ame, age=25), User(name=mahiro, age=30), User(name=takeru, age=20)]
users.sortBy { it.age }
print(users)     // [User(name=takeru, age=20), User(name=ame, age=25), User(name=mahiro, age=30)]

並び替えの規則を指定する:sortedWith/sortWith

今までは昇順や降順で並び替えてきましたがsortedWith/sortWithメソッドを使用することで並び替えの基準を任意のものに指定することができます。例えば以下は文字列の長さによって並び替えをしています。

val list = listOf("Kotlin","Swift","Java","Objective-C")
val comparator: Comparator<String> = compareBy { it.length }
val lengthList = list.sortedWith(comparator)
print(lengthList) // [Java, Swift, Kotlin, Objective-C]

MutableListの場合

ミュータブルの場合はsortWithメソッドが使用できるようになります。

val list = mutableListOf("Kotlin","Swift","Java","Objective-C")
val comparator: Comparator<String> = compareBy { it.length }
list.sortWith(comparator)
print(list) // [Java, Swift, Kotlin, Objective-C]

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index