Android
 Computer >> コンピューター >  >> プログラミング >> Android

Androidで配列の要素を並べ替える方法をわかりやすく解説

この記事では、Androidアプリで配列の要素を並べ替え(ソート)する方法を、実際に動くサンプルコードとともに解説します。数値が入った配列を昇順に並べ替え、その結果を画面に表示するまでの一連の手順を確認していきましょう。

手順1:新規プロジェクトを作成する

まず、Android Studioで新しいプロジェクトを作成します。メニューから「File」→「New Project」を選択し、必要な項目を入力してプロジェクトを作成してください。

手順2:レイアウトファイルにコードを追加する

次に、res/layout/activity_main.xml に以下のコードを記述します。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:app="https://schemas.android.com/apk/res-auto"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:gravity="center"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical">
    <TextView
        android:id="@+id/text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></TextView>
</LinearLayout>

このレイアウトでは、並べ替えた後の配列を表示するためのTextViewを1つ配置しています。LinearLayoutは垂直方向に要素を中央揃えで配置する設定になっています。

手順3:MainActivity.javaにコードを追加する

続いて、src/MainActivity.java に以下のコードを記述します。

package com.example.myapplication;

import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.TextView;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
    TextView text;
    int temp;
    int[] arr = {12, 10, 5, 4, 2, 20, 6, 1, 0, 2};
    ArrayList<String> arrayList;

    @RequiresApi(api = Build.VERSION_CODES.P)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text = findViewById(R.id.text);
        for (int i = 0; i < arr.length; i++) {
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[i] > arr[j]) {
                    temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        StringBuffer buff = new StringBuffer();
        for (int i = 0; i < arr.length; i++) {
            buff.append(String.valueOf(arr[i] + " , "));
            Log.d("sai", String.valueOf(arr[i]));
        }
        text.setText(buff);
    }
}

コードのポイント

このサンプルでは、選択ソートの考え方に基づいた二重ループで配列を昇順に並べ替えています。

  • 外側のfor文:基準となる要素(arr[i])を順番に指定します。
  • 内側のfor文:基準の要素より後ろにある要素(arr[j])と順番に比較します。
  • 値の交換:arr[i] が arr[j] より大きい場合、一時変数 temp を使って2つの値を入れ替えます。
  • 結果の表示:並べ替え完了後、StringBufferで各要素を連結して文字列化し、TextViewにセットして画面に表示します。Log.d()でログ出力も行っているため、Logcatでも確認できます。

なお、実務開発では java.util.Arrays.sort(arr); のように標準ライブラリのsortメソッドを使えば、1行で同じ結果を得られます。ただし、ソートアルゴリズムの仕組みを理解するうえで、自前での実装はとても良い勉強になります。

アプリを実行してみよう

それでは、アプリケーションを実行してみましょう。ここでは、AndroidスマートフォンがPCに接続されているものとして説明します。

  1. Android Studioでプロジェクト内のアクティビティファイルを開きます。
  2. ツールバーの「Run」アイコンをクリックします。
  3. デバイス選択ダイアログで、接続したモバイルデバイスを選択します。

実行すると、端末の画面に並べ替えられた配列の結果が以下のように表示されます。

Androidで配列の要素を並べ替える方法をわかりやすく解説

  1. AndroidでConcurrentLinkedQueueを配列に変換する方法【サンプルコード付きで解説】

    本記事では、Androidアプリ開発においてConcurrentLinkedQueueを配列に変換する方法を、実際のサンプルコードとともにわかりやすく解説します。ConcurrentLinkedQueueとは?ConcurrentLinkedQueueは、リンクノード(連結リスト)ベースの無制限キューです。最大の特徴はスレッドセーフである点で、複数のスレッドから同時にキューの要素へ安全にアクセスできます。要素はFIFO(先入れ先出し)方式で管理され、新しく追加された要素は常に末尾(tail)から挿入されます。また、null値は許可されていない点にも注意が必要です。キューへの追加にはadd()メ

  2. AndroidでJSON配列を反復処理する方法をステップごとに解説

    この記事では、Androidアプリ開発においてJSON配列(JSONArray)を反復処理する方法を、実際のサンプルコードとともにステップ形式で解説します。org.jsonパッケージのJSONObjectとJSONArrayクラスを使用して、JSON文字列からデータを取り出し、画面に表示するまでの一連の流れを学べます。完成イメージ本チュートリアルでは、従業員情報(ID・名前・給与)を含むJSON文字列を解析し、各要素を順番に読み取ってTextViewに表示するシンプルなアプリを作成します。手順1:Android Studioで新規プロジェクトを作成するまず、Android Studioを起動し