Javaで配列を反転する方法

1. 概要

このクイック記事では、Javaで配列を反転する方法を説明します。

純粋なJava 8ベースのソリューションを使用してこれを実行する方法がいくつかあります。既存の配列を変更するものと新しいものを作成するものがあります。

次に、外部ライブラリを使用した2つのソリューション( Apache Commons Lang を使用したソリューションと Google Guava を使用したソリューション)を見ていきます。

2問題を定義する

基本的な考え方は、配列内の要素の順序を逆にすることです。だから、配列が与えられた場合:

fruits = {"apples", "tomatoes", "bananas", "guavas", "pineapples"}

取得したいです。

invertedFruits = {"pineapples", "guavas", "bananas", "tomatoes",  "apples"}

それができる方法をいくつか見てみましょう。

3従来の for ループを使う

配列を反転することを考える最初の方法は for ループを使うことです。

void invertUsingFor(Object[]array) {
    for (int i = 0; i < array.length/2; i++) {
        Object temp = array[i];
        array[i]= array[array.length - 1 - i];
        array[array.length - 1 - i]= temp;
    }
}

ご覧のとおり、コードは配列の半分まで繰り返し、対称位置にある要素を変更します。

反復中に配列の現在位置の値を失わないように、一時変数を使用します。

4 Java 8 Stream API の使用

Stream APIを使用して配列を反転することもできます。

Object[]invertUsingStreams(Object[]array) {
    return IntStream.rangeClosed(1, array.length)
      .mapToObj(i -> array[array.length - i])
      .toArray();
}

ここでは、メソッド IntStream.range を使用して、数字の連続ストリームを生成します。次に、このシーケンスを降順で配列インデックスにマッピングします。

5 Collections.reverse() を使う

Collections.reverse() メソッドを使用して配列を反転する方法を見てみましょう。

public void invertUsingCollectionsReverse(Object[]array) {
    List<Object> list = Arrays.asList(array);
    Collections.reverse(list);
}

前の例と比較して、これはタスクを実行するためのより読みやすい方法です。

6. Apache Commons Lang を使う

配列を反転するもう1つの選択肢は、 Apache Commons Lang ライブラリを使用することです。それを使用するには、まずライブラリを依存関係として含める必要があります。

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.5</version>
</dependency>

Commons Lang の最新版はhttps://search.maven.org/classic/#search%7Cga%7C1%7Cg%3A%22org.apache.commons%22%20AND%20a%3A%22commons-lang3にあります。 %22[メイヴン中央]。

配列を反転するために ArrayUtils クラスを使用しましょう。

public void invertUsingCommonsLang(Object[]array) {
    ArrayUtils.reverse(array);
}

ご覧のとおり、この解決策は非常に簡単です。

7. Google Guava を使用する

もう1つの選択肢は、 Google Guava ライブラリを使用することです。 Commons Lang と同じように、ライブラリを依存関係として含めます。

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>22.0</version>
</dependency>

最新版はhttps://search.maven.org/classic/#search%7Cgav%7C1%7Cg%3A%22com.google.guava%22%20AND%20a%3A%22guava%22[Maven Centralにあります]。

次に、 Guava’s Lists クラスの reverse メソッドを使用して配列を反転します。

public Object[]invertUsingGuava(Object[]array) {
    List<Object> list = Arrays.asList(array);
    List<Object> reversed = Lists.reverse(list);
    return reversed.toArray();
}

8結論

この記事では、Javaで配列を反転するいくつかの異なる方法を調べました。コアJavaのみを使用するいくつかのソリューションと、サード・パーティーのライブラリーを使用する他の2つのソリューション( Commons Lang Guava )を示しました。

ここに示されているすべてのコードサンプルはhttps://github.com/eugenp/tutorials/tree/master/core-java-arrays[GitHubで見つけることができます] - これはMavenプロジェクトなので、インポートして実行するのは簡単なはずです。そのまま。