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

GuavaのJoinerクラスを使ってJavaで文字列を結合する方法

Google Guavaライブラリに含まれるJoinerクラスは、文字列やオブジェクトなどを連結(結合)するための便利なメソッドを多数提供しています。区切り文字を指定して要素をつなげたり、null値をスキップしたりと、標準APIでは煩雑になりがちな処理を簡潔に記述できるのが特徴です。

サンプルコード

import com.google.common.base.Joiner;
import java.util.*;
public class Demo{
    public static void main(String[] args){
        String[] my_arr = { "hel", null, "lo", "wo", "r", null, "ld" };
        System.out.println("The original array is : "+ Arrays.toString(my_arr));
        String my_result = Joiner.on('+').skipNulls().join(my_arr);
        System.out.println("The joined string is : " + my_result);
    }
}

実行結果

The original array is [hel, null, lo, wo, r, null, ld]
The joined string is hel+lo+wo+r+ld

コードの解説

このプログラムでは、Demoというクラスのmainメソッド内で文字列型の配列を定義しています。配列には「hel」「lo」「wo」「r」「ld」といった文字列のほかに、null値が2つ混在している点がポイントです。

まず、Arrays.toString()メソッドを使って元の配列を文字列化し、コンソールに表示します。次に、Joiner.on('+')で区切り文字として「+」を指定し、さらにskipNulls()を呼び出すことでnull要素を除外した上でjoin()メソッドにより配列全体を連結しています。

その結果、nullが取り除かれ、残りの文字列が「+」でつながれた「hel+lo+wo+r+ld」という一つの文字列が生成されます。この処理を簡潔に実現できているのは、Guavaパッケージに含まれるJoinerクラスのおかげです。最終的な出力はコンソールに表示されます。

Joinerクラスの主なメソッド

  • Joiner.on(区切り文字):要素を連結する際の区切り文字を指定します。
  • skipNulls():連結時にnullの要素を自動的にスキップします。
  • useForNull(文字列):nullの代わりに指定した文字列を埋め込みます(例:useForNull("N/A"))。
  • join(Iterable / 配列):指定されたコレクションや配列の要素を実際に連結します。

なお、Joinerインスタンスは不変(イミュータブル)であるため、設定を変更した新しいインスタンスが必要な場合は、useForNull()やskipNulls()などが新しいJoinerオブジェクトを返す仕組みになっています。これにより、スレッドセーフな安全な利用が可能です。

  1. Javaの抽象クラスとは?基本ルールと実装例をわかりやすく解説

    Javaの抽象クラスとは宣言に「abstract」キーワードを含むクラスは、抽象クラスと呼ばれます。抽象クラスは、継承によって利用されることを前提とした設計用のクラスであり、オブジェクト指向プログラミングにおける重要な概念の一つです。抽象クラスの主な特徴抽象クラスには、抽象メソッド(本体を持たないメソッド。例:public void get();)が含まれる場合もあれば、含まれない場合もあります。ただし、クラス内に1つでも抽象メソッドが存在する場合、そのクラスは必ず abstract として宣言しなければなりません。abstract として宣言されたクラスは、インスタンス化(newによるオブジ

  2. Javaのfinalクラスとは?継承を禁止する仕組みと使い方を徹底解説

    Javaにおいて、クラスにfinal修飾子を付けて宣言する最大の目的は、そのクラスがサブクラス化(継承)されることを防ぐことです。クラスがfinalとして宣言されると、どのクラスもそのクラスを継承できなくなり、finalクラスの機能や振る舞いを拡張・変更することが不可能になります。finalクラスの基本構文finalクラスの宣言は非常にシンプルです。クラス名の前にfinalキーワードを付けるだけです。public final class Test { // クラスの本体 }このように宣言されたTestクラスに対して、以下のような継承を試みるとコンパイルエラーが発生します。// コンパイ