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

【Java入門】配列・リストから一意の値(重複なし)だけを出力する方法

Javaで配列やリストに含まれる値の中から、重複を除いた一意の値のみを出力したいケースはよくあります。本記事では、基本的なループ処理による実装例と、その実行結果、さらにJava 8以降で使えるStream APIを利用した簡潔な代替手法までわかりやすく解説します。

サンプルコード:ループ処理で一意の値を出力する

import java.io.*;
public class Demo{
    static void distinct_vals(int my_arr[], int len){
        for (int i = 0; i < len; i++){
            int j;
            for (j = 0; j < i; j++)
                if (my_arr[i] == my_arr[j])
                    break;
            if (i == j)
                System.out.print( my_arr[i] + " ");
        }
    }
    public static void main (String[] args){
        int my_arr[] = {55, 67, 99, 11, 54, 55, 88, 99, 1, 13, 45};
        int arr_len = my_arr.length;
        System.out.println("配列内の一意な要素は以下の通りです");
        distinct_vals(my_arr, arr_len);
    }
}

実行結果

配列内の一意な要素は以下の通りです
55 67 99 11 54 88 1 13 45

コードの仕組みを解説

このプログラムでは、Demoというクラスの中にdistinct_valsというメソッドを定義しています。このメソッドは、対象となる配列とその長さを引数として受け取ります。

メソッド内部では二重のforループを使用し、現在注目している要素(my_arr[i])が、それより前に存在する要素(my_arr[j])と一致するかどうかを順番にチェックします。もし一致する要素が見つかれば、それはすでに出力済みの重複値であるため、内側のループをbreakで抜けます。

一方、内側のループが最後まで回りきってi == jとなった場合、その要素はそれ以前に現れていない初めての値(一意な値)であると判断でき、画面に出力されます。

mainメソッドでは、整数型の配列を定義し、その長さを変数arr_lenに格納したうえで、distinct_valsメソッドを呼び出しています。結果として、重複を除いた値だけがコンソールに表示されます。

補足:Stream APIを使ったより簡潔な書き方(Java 8以降)

Java 8以降を使用している場合は、Stream APIのdistinct()メソッドを活用することで、わずか数行で同じ処理を実現できます。

import java.util.Arrays;
import java.util.List;

public class Demo {
    public static void main(String[] args) {
        List<Integer> myList = Arrays.asList(55, 67, 99, 11, 54, 55, 88, 99, 1, 13, 45);
        System.out.println("配列内の一意な要素は以下の通りです");
        myList.stream()
              .distinct()
              .forEach(v -> System.out.print(v + " "));
    }
}

distinct()は内部的に要素の等価性を判定して重複を自動的に取り除いてくれるため、手動でのループ処理が不要になり、コードの可読性と保守性が大きく向上します。用途やプロジェクトのJavaバージョンに応じて、両者の使い分けを検討するとよいでしょう。

  1. 【Python入門】リストから一意の値(重複しない要素)だけを抽出して出力する方法

    リストが与えられたとき、その中から重複を除いた一意の値(ユニークな要素)だけを取り出して表示するのが、この記事の目的です。Pythonを使えば、初心者でも簡単に実装できる定番の処理なので、ぜひマスターしておきましょう。実行例入力:A = [1, 2, 3, 4, 2, 1, 9] 出力:[1, 2, 3, 4, 9]リスト内に同じ値が複数回現れていても、出力されるのはそれぞれ1回だけです。アルゴリズムステップ1:ユーザーからリストを入力として受け取る。 ステップ2:空のリストを作成する。 ステップ3:元のリストの全要素を順番に走査する。 ステップ4:その要素がすでに一意のリストに存在するかどう

  2. JavaでList(リスト)を配列に変換する方法|toArray()とArrays.asList()の使い方

    Javaの開発において、List(リスト)と配列(Array)の相互変換は非常によく使われる基本的な操作です。 Listを配列に変換する最も簡単かつ推奨される方法は、.toArray()メソッドを使うことです。逆に、配列をListに戻したい場合は、Arrays.asList()メソッドを使用します。 以下では、文字列(String)のListや整数(Integer)のListを、それぞれ対応する配列に変換する具体例を紹介します。 String型のListを配列に変換する import java.util.ArrayList; import java.util.List; public cl