カテゴリ: Kotlin 更新日: 2026/06/09

Kotlinのsorted・sortedByでコレクションをソートする方法【初心者向け完全ガイド】

Kotlinのsorted・sortedByでコレクションをソートする方法
Kotlinのsorted・sortedByでコレクションをソートする方法

先生と生徒の会話形式で理解しよう

生徒

「Kotlinでリストの要素を順番に並べ替えるにはどうしたらいいですか?」

先生

「KotlinにはsortedsortedByという便利な関数があります。数字や文字列を昇順や特定の条件で並び替えることができますよ。」

生徒

「sortedとsortedByって、どう違うんですか?」

先生

「sortedは自然な順序で並べ替え、sortedByは指定した条件(キー)に基づいて並べ替えます。では、例を交えて説明しますね。」

1. sortedとは?

1. sortedとは?
1. sortedとは?

sortedは、リストの要素を自然な順序で並べ替えるための関数です。自然な順序とは、数字であれば小さい順、文字列であれば辞書順(あいうえお・ABC順)を指します。

ポイントは、元のリストは変更されず、新しい並び替え済みのリストが返ってくる点です。安全にデータを扱えるため、初心者でも安心して使えます。

まずは、数字のリストを小さい順に並べ替える基本的な例を見てみましょう。


fun main() {
    val numbers = listOf(5, 2, 8, 1, 3)
    val sortedNumbers = numbers.sorted()
    println(sortedNumbers)
}

[1, 2, 3, 5, 8]

この例では、sorted()を呼び出すだけで、数字が自動的に小さい順へ並び替えられています。for文などで比較処理を書く必要はありません。

なお、文字列のリストに使った場合も同様で、アルファベットやひらがなの順番に従って並び替えられます。sortedは「シンプルに順番を整えたいとき」に最初に覚えておきたい関数です。

2. sortedByとは?

2. sortedByとは?
2. sortedByとは?

sortedByは、リストの要素そのものではなく、要素の中にある値(プロパティ)や計算結果を基準に並べ替えたいときに使う関数です。

sortedが「そのままの値」で順番を決めるのに対し、sortedByは「どの値を基準にするか」を自分で指定できるのが大きな特徴です。

たとえば、文字列を長さの短い順に並べたい場合は、次のように書きます。


fun main() {
    val words = listOf("apple", "banana", "kiwi", "grape")
    val sortedByLength = words.sortedBy { it.length }
    println(sortedByLength)
}

[kiwi, apple, grape, banana]

{ it.length }の部分が「並び替えの基準」です。ここでは「文字数」を表しており、短い単語から順番に並んでいます。

このようにsortedByを使えば、「長さ」「価格」「年齢」など、さまざまな条件を基準に並べ替えができるため、実務でもよく使われる便利な関数です。

3. 降順で並べ替える(sortedDescending / sortedByDescending)

3. 降順で並べ替える(sortedDescending / sortedByDescending)
3. 降順で並べ替える(sortedDescending / sortedByDescending)

並べ替えは「小さい順」だけでなく、大きい順(降順)にしたい場面もよくあります。たとえば、点数の高い順にランキングを作ったり、長い単語を先に表示したりするケースです。

そんなときは、数字ならsortedDescending、条件を指定したいならsortedByDescendingを使います。どちらも元のリストはそのままで、並び替えた新しいリストが返ってくるので安心です。


fun main() {
    val numbers = listOf(5, 2, 8, 1, 3)
    val descNumbers = numbers.sortedDescending()
    println(descNumbers)

    val words = listOf("apple", "banana", "kiwi", "grape")
    val descByLength = words.sortedByDescending { it.length }
    println(descByLength)
}

[8, 5, 3, 2, 1]
[banana, apple, grape, kiwi]

最初のsortedDescending()は、数字を「大きい → 小さい」の順に並べ替えています。次のsortedByDescending { it.length }は、it.length(文字数)を基準にして、長い単語から順番に並べています。

初心者向け:覚え方のコツ

Descendingは「下り=大きい方から下がっていく」と覚えると分かりやすいです。まずは「降順にしたいなら末尾にDescending」と覚えておくと迷いません。

4. データクラスとsortedBy

4. データクラスとsortedBy
4. データクラスとsortedBy

sortedByは、数字や文字列だけでなく、データクラス(オブジェクト)のリストを並べ替えるときにも活躍します。オブジェクトはそのままだと比較できないことが多いので、「どの項目を基準にするか」を指定できるsortedByが便利です。

たとえば生徒のデータがあり、年齢の小さい順に並べたい場合は、ageを基準(キー)にして並べ替えます。


data class Student(val name: String, val age: Int)

fun main() {
    val students = listOf(
        Student("山田", 20),
        Student("佐藤", 18),
        Student("鈴木", 22)
    )
    val sortedByAge = students.sortedBy { it.age }
    println(sortedByAge)
}

[Student(name=佐藤, age=18), Student(name=山田, age=20), Student(name=鈴木, age=22)]

sortedBy { it.age }itは、リストの中の生徒を1人ずつ表しています。そこからageだけを取り出して比較することで、年齢が小さい順に並べ替えられます。

初心者向け:基準を変えると並び方も変わる

もし名前順にしたいなら、sortedBy { it.name }のように基準を変えるだけでOKです。「並べ替えのルールを1つ決めて渡す」と考えると、sortedByの使い方がつかみやすくなります。

5. 実用例:商品の価格順に並べ替え

5. 実用例:商品の価格順に並べ替え
5. 実用例:商品の価格順に並べ替え

「商品の一覧を安い順に並べたい」という場面は、ネットショップや買い物アプリでよくあります。KotlinのsortedByを使えば、価格(数値)を基準にしてリストを並べ替える処理を、短く分かりやすく書けます。

ここでは、商品名と価格を持つデータクラスを用意して、priceの小さい順(安い順)に並べ替えてみましょう。


data class Product(val name: String, val price: Int)

fun main() {
    val products = listOf(
        Product("ノートパソコン", 120000),
        Product("マウス", 2000),
        Product("キーボード", 5000)
    )
    val sortedByPrice = products.sortedBy { it.price }
    println(sortedByPrice)
}

[Product(name=マウス, price=2000), Product(name=キーボード, price=5000), Product(name=ノートパソコン, price=120000)]

sortedBy { it.price }itは、リストの中のProductを1つずつ指しています。そこからprice(値段)を取り出して比較するので、結果は安い商品から順に並びます。

初心者向け:まずは「基準はprice」と覚えよう

並べ替えで迷ったら、「何を基準にする?」を先に決めるのがコツです。今回は価格なのでprice。名前順ならsortedBy { it.name }のように、基準を変えるだけで並び方も変えられます。

6. sortedとsortedByの使い分け

6. sortedとsortedByの使い分け
6. sortedとsortedByの使い分け

ここまで読んだうえで「結局どれを使えばいいの?」となりやすいので、最後に使い分けの目安を整理しておきます。ポイントは、並べ替えたい対象が“そのまま比較できるか”、そして何を基準に並べたいかです。

  • sorted():要素自体が比較可能(数値や文字列)で、自然な順序(昇順)で並べ替える
  • sortedBy { ... }:データクラスなどで、特定のプロパティ(年齢・価格・長さなど)を基準に並べ替える
  • 降順にしたい場合は、sortedDescending()sortedByDescending()を選ぶ

たとえば「数字を小さい順にしたい」ならsorted()が一番シンプルです。一方で「商品の価格順」「生徒の年齢順」のように、オブジェクトの中の項目で並べるならsortedByが向いています。

初心者向け:迷ったときのチェック

「そのまま並べ替えられる(数字・文字列)?」→ はい:sorted / いいえ(オブジェクト):「何を基準にする?」→ それをsortedBy { ... }に書く、と考えると選びやすいです。

このように、用途に合った関数を選べば、無理にfor文で比較を書くよりもコードが読みやすくなり、並べ替えの意図も伝わりやすくなります。

Kotlinを基礎からしっかり学びたい人や、 Java経験を活かしてモダンな言語にステップアップしたい人には、 定番の入門書がこちらです。

基礎からわかるKotlinをAmazonで見る

※ Amazon広告リンク

まとめ

まとめ
まとめ

Kotlinでリストやコレクションの要素を並べ替えるときに使うsortedやsortedByという関数は、初めて学ぶ段階では違いが分かりにくいものですが、実際にはとても直感的で扱いやすい機能です。自然な順番で並べ替えるsorted、条件を指定して並び替えるsortedBy、さらに降順にしたいときのsortedDescendingやsortedByDescendingなど、場面に応じて柔軟に使い分けることができます。並べ替えを正しく使えるようになると、日常的なデータ処理からアプリケーションでの一覧表示、検索機能の最適化など、幅広い場面で役立ちます。

並べ替えという操作は単に順番を変えるだけの作業に思えますが、実際はデータを扱う上で非常に重要な工程であり、情報をどのように見せるか、どのように扱うかという点に大きく関わります。例えば、商品一覧の価格順表示、生徒名簿の年齢順ソート、コメントを投稿日時で並び替えるといった処理は、すべてsortedやsortedByで実現できます。こうした日常的な例を考えると、実務でも活用できる技術であることがよく分かります。

また、sortedやsortedByはイミュータブルなコレクションに対して使用しても新しいリストを生成するため、元のデータが変更されることはありません。この性質により、データを安全に扱いながら複数の構成を比較することができ、学習段階でも安心して使える仕組みになっています。さらにデータクラスを利用してプロパティをキーに並べ替える方法は、実用的な場面にも直結するため、覚えておくととても便利です。

実務でも学習でも、複雑なデータを処理する場合は「どの基準で並べるか」が常に問われます。sortedByを使えば、文字列の長さを基準にしたり、計算した結果を基準にしたり、オブジェクトの特定の要素を参照したりと、柔軟に並べ替え条件を設計できます。これはデータの見せ方を工夫したいときや、ユーザーが使いやすい並び順を設定したいときにとても役立ちます。

以下のサンプルコードは、複雑な条件を組み合わせてsortedByを活用する例です。商品の価格を基準にしつつ、同じ価格帯なら名前の長さで並べ替えるといった処理も簡単に書けることがわかります。

複数条件で並べ替えるサンプルコード


data class Item(val name: String, val price: Int)

fun main() {
    val items = listOf(
        Item("りんご", 300),
        Item("みかん", 300),
        Item("ぶどう", 500),
        Item("キウイ", 300)
    )
    val sortedItems = items.sortedBy { it.price }
        .sortedBy { it.name.length }

    println(sortedItems)
}

このように複数のsortedByを組み合わせることで、より細かい並べ替えが実現でき、データの分析や表示において非常に役立ちます。アプリ開発や業務システムの画面表示にも役立つため、Kotlin初心者であってもぜひ身につけておきたい重要な部分です。

並べ替えの仕組みを理解しておくと、ほかの処理にも応用が利きます。例えば、検索結果のフィルタリング後に並び替えを行って見やすくしたり、ランキング形式の一覧を作ったりすることも簡単になります。並べ替えは地味な操作に見えますが、データを扱うすべてのアプリケーションにおいて重要な要素であるため、正しい知識を身につけておくことが大切です。

今回学んだsorted、sortedBy、sortedDescending、sortedByDescendingの違いと使い分けをしっかり理解しておけば、さまざまなコレクション操作がより自然に書けるようになります。実際の開発でも、データの順序を整える技術は頻繁に必要となるため、今後の学習や実践に大いに役立つでしょう。

先生と生徒の振り返り会話

生徒

「先生、sortedとsortedByを比べてみると、用途に応じて使い分けることが大事なんだとよく分かりました。特にデータクラスの並べ替えは実用的だと思いました。」

先生

「その通りですよ。実際のアプリでは、名前順や価格順、日付順など、さまざまな並べ替えが必要になります。sortedByはそうした実用的な場面でとても役立つので、ぜひ覚えておいてください。」

生徒

「降順で並べ替える関数も分かりやすかったです。sortedDescendingやsortedByDescendingは、ランキングを作りたいときにも使えそうですね。」

先生

「ええ、その通りです。並べ替えの仕組みを理解しておけば、データの見せ方を自由に工夫できるようになります。今回の内容を実際にプログラムで試してみると、さらに理解が深まりますよ。」

生徒

「ありがとうございます。今日の内容をしっかり復習して、もっと複雑なデータの処理にも挑戦してみます!」

先生

「それが一番大切です。基本を押さえれば応用はどんどん広がるので、焦らず丁寧に進めていきましょう。」

関連セミナーのご案内

【未経験OK】Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験する60分

「プログラミングを始めたい」を形にする。最新言語Kotlinで楽しむ、ものづくりの第一歩。

本講座は、プログラミング経験が全くない方のためのエントリー講座です。「コードを書くってどういうこと?」という基本から、世界中で使われている最新言語Kotlin(コトリン)を使って、実際にプログラムを動かすまでを体験します。難しい理屈よりも、まずは「自分の手で動かす楽しさ」を最短距離で実感していただきます。

具体的な体験内容と環境

【つくるもの】
簡単な言葉を入力すると自動で返答してくれる「対話型ミニプログラム」や、計算を自動化する「便利ツール」をゼロから作成します。黒い画面に自分の書いた文字が表示される瞬間は、最高の感動体験です。

【開発環境】
プロのエンジニアが実際に使っている開発ツールIntelliJ IDEA(インテリジェイ)をインストールします。ボタン一つで日本語化し、初心者でも迷わず操作できる「魔法の設定」を一緒に行います。

この60分で得られる3つの体験

1. 自分のパソコンが「開発基地」に

プロと同じ道具を揃えることで、明日から一人でもプログラミングを続けられる環境が整います。

2. プログラミングの「仕組み」がスッキリ

「変数」や「型」といった難しい言葉も、身近な例え話で解説。モヤモヤをゼロにします。

3. 「読みやすい」から「直せる」へ

Kotlinは英語に近くて読みやすいのが特徴。自分でコードを読んで、間違いを見つけるコツも伝授します。

※本講座は、パソコン操作が不安な方でも安心して受講いただける完全マンツーマンです。あなたのペースに合わせて、一つずつ丁寧に進めていきます。

セミナー画像

Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験

カテゴリの一覧へ
新着記事
New1
Kotlin
Kotlinのクラスドキュメントコメントの書き方ガイド|初心者でもわかるKDocの基本と書き方
New2
Go言語
Go言語の関数設計パターン集!可読性と再利用性を高めよう
New3
Go言語
Go言語のインターフェースと抽象化の考え方を初心者向けに解説
New4
Kotlin
Kotlinのsorted・sortedByでコレクションをソートする方法【初心者向け完全ガイド】
人気記事
No.1
Java&Spring記事人気No1
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.2
Java&Spring記事人気No2
Swift
Swift入門ガイド|基本構文と書き方をマスターしよう
No.3
Java&Spring記事人気No3
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.4
Java&Spring記事人気No4
Kotlin
Kotlinで画面遷移を実装しよう!初心者でもわかるIntentの使い方完全ガイド
No.5
Java&Spring記事人気No5
Go言語
Go言語のマルチステージビルド完全解説!Dockerで軽量なコンテナを作る方法
No.6
Java&Spring記事人気No6
Go言語
Go言語の構造体を使った設計パターン集(DTO・VOなど)
No.7
Java&Spring記事人気No7
Kotlin
Kotlinの可視性修飾子を完全ガイド!public・private・internalの意味と使い分けを初心者向けに解説
No.8
Java&Spring記事人気No8
Kotlin
Kotlinのインストール方法まとめ!Windows・Mac・Linux別にステップ解説