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

【Android】ソート済みリンクリストから重複を削除する方法をわかりやすく解説

はじめに

この記事では、Androidアプリ開発において、ソート済みのリンクリスト(LinkedList)から重複する要素を削除する方法を解説します。Java標準ライブラリのLinkedHashSetを活用すれば、要素の順序を保ったまま重複だけを簡単に除去できます。

実装手順

ステップ1:新規プロジェクトの作成

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

ステップ2:レイアウトファイル(activity_main.xml)の編集

次に、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">
    <TextView
        android:id="@+id/text"
        android:textSize="30sp"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

上記のコードでは、重複を除去した後のリンクリストの内容を画面に表示するためのTextViewを配置しています。

ステップ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.widget.TextView;

import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.Stack;

public class MainActivity extends AppCompatActivity {
    @RequiresApi(api = Build.VERSION_CODES.P)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        LinkedList<Integer> list = new LinkedList<>();
        list.add(11);
        list.add(11);
        list.add(11);
        list.add(14);
        list.add(14);
        list.add(20);

        LinkedHashSet<Integer> hashSet = new LinkedHashSet<>(list);
        TextView textView = findViewById(R.id.text);
        textView.setText(hashSet.toString());
    }
}

コードの解説

このサンプルでは、まずLinkedListに「11」「11」「11」「14」「14」「20」という値を順番に追加しています。その後、LinkedHashSetのコンストラクタにこのリストを渡すことで、重複する要素が自動的に排除されます。

LinkedHashSetは通常のHashSetと異なり、要素の挿入順序を保持するという特徴があります。そのため、元のリストの並び順を崩すことなく、重複だけを取り除いた結果「[11, 14, 20]」を取得できるのです。

アプリの実行と結果確認

それでは、アプリケーションを実行してみましょう。ここでは、実機のAndroid端末がパソコンに接続されているものとします。Android Studioからアプリを起動するには、プロジェクト内のいずれかのアクティビティファイルを開き、ツールバーの実行アイコンをクリックします。候補が表示されるので、お使いのモバイルデバイスを選択してください。

アプリが起動すると、端末の画面には重複が除去されたリンクリストの内容が以下のように表示されます。

【Android】ソート済みリンクリストから重複を削除する方法をわかりやすく解説

まとめ

LinkedHashSetを使えば、ソート済みリンクリストから重複を削除する処理を数行のコードで実現できます。ループや条件分岐を自前で実装する必要がなく、順序も保持されるため、実務でも非常に役立つテクニックです。ぜひ開発の際に活用してみてください。

  1. 【保存版】Excelでドロップダウンリストの重複を削除する4つの方法

    大量のデータをMicrosoft Excelで扱っていると、ドロップダウンリストを作成したものの、リスト内に重複した値が含まれてしまい困ることがあります。実は、この重複を削除するのはとても簡単で、正しい手順を知っていれば作業時間と手間を大幅に節約できます。本記事では、Excelのドロップダウンリストから重複値を効率的に取り除くための4つの方法を、分かりやすい図解とともに詳しく解説します。 Excelのドロップダウンリストから重複を削除する4つの方法 ここでは、ある国がヨーロッパの3カ国に輸出した果物や野菜に関する情報が記録された大きなワークシートを例にします。データには商品名(Product

  2. Androidスマホの重複写真を簡単に削除する方法|Duplicate Files Fixerの使い方

    完璧な一枚は、何度もの失敗の先に生まれます。同じように、理想の写真を撮るまでには、何十枚もの「イマイチな写真」や似たような自撮り画像がスマホの中に溜まってしまうものです。 こうした重複ファイルは、フォトギャラリーを散らかすだけでなく、貴重なストレージ容量をも圧迫します。だからこそ、ギャラリーは定期的に整理すべきですが、「そんな時間はない」というのが本音ではないでしょうか。 そこで役立つのが、Android端末内の重複写真を自動で見つけ出して削除できる、賢い重複ファイル検索アプリです。 幸い、Google Playストアには重複画像削除アプリが数多く存在します。では、どれが最良の重複写真検出アプ