Javaの文字列の配列

JavaのString配列は、固定数の文字列を保持するために使用されます。特に、Javaの初心者や特定のシナリオをテストするために、String配列は非常に一般的です。実際、Javaのmainメソッドの引数もString配列です(public static void main(String[] args))。したがって、今日は例プログラムを使って、JavaのString配列のさまざまな側面について見てみましょう。

  • Java String array is basically an array of objects.
  • There are two ways to declare string array – declaration without size and declare with size.
  • There are two ways to initialize string array – at the time of declaration, populating values after declaration.
  • We can do different kind of processing on string array such as iteration, sorting, searching etc.

さあ、Javaの文字列配列の例プログラムを見ていきましょう。

Javaでの文字列配列の宣言

以下のコードスニペットでは、Javaでの文字列配列の宣言の異なる方法を示しています。

String[] strArray; //declare without size

String[] strArray1 = new String[3]; //declare with size

上記は、文字列の配列をString strArray[]と書くこともできますが、上記の方法が標準で推奨される方法です。また、上記のコードでは、strArrayはnullですが、strArray1の値は[null, null, null]です。

JavaのString型の配列の初期化

Javaで文字列配列を初期化するさまざまな方法を見てみましょう。

//inline initialization
String[] strArray1 = new String[] {"A","B","C"};
String[] strArray2 = {"A","B","C"}; 

//initialization after declaration
String[] strArray3 = new String[3];
strArray3[0] = "A";
strArray3[1] = "B";
strArray3[2] = "C";

すべての3つの文字列配列は同じ値を持っていますが、それらに対してequalsメソッドを呼び出すと、falseが返されます。

System.out.println(strArray1.equals(strArray2)); // false
System.out.println(Arrays.toString(strArray1).equals(Arrays.toString(strArray2)));// true

理由は、配列がオブジェクトであり、オブジェクトクラスが以下のようなequals()メソッドを実装しているためです。

public boolean equals(Object obj) {
        return (this == obj);
    }

2番目の文は、値を文字列に変換すると値が同じであり、Stringクラスのequals()メソッドの実装で値が確認されるため、真です。詳細については、StringクラスのAPIドキュメントをご確認ください。

Javaの文字列配列を繰り返す

私たちはJavaのforループまたはJavaのforeachループを使用して、文字列の配列を反復処理することができます。

String[] strArray2 = {"A","B","C"}; 
for (int i = 0; i < strArray2.length; i++) {
	System.out.print(strArray2[i]);
}

for (String str : strArray2) {
	System.out.print(str);
}

文字列の配列内で文字列を検索する

以下は、配列内で文字列を検索するために for ループを使用することができます。以下にはそれに関する単純な例があります。

package com.scdev.stringarray;

public class JavaStringArrayExample {

	public static void main(String[] args) {
		String[] strArray = { "A", "B", "C" };
		
		boolean found = false;
		int index = 0;
		String s = "B";
		for (int i = 0; i < strArray.length; i++) {
			if(s.equals(strArray[i])) {
				index = i; found = true; break;
			}
		}
		if(found)
			System.out.println(s +" found at index "+index);
		else
			System.out.println(s +" not found in the array");
		
	}

}

文字列を見つけたら、ループからすぐに抜けるために「break」キーワードの使用に注目してください。

Javaの文字列配列のソート

私たちは独自のソートアルゴリズムを実装することもできますし、Arraysクラスのソートメソッドを使用することもできます。

String[] vowels = {"a","i","u","e","o"};
		
System.out.println("Before sorting "+Arrays.toString(vowels));

Arrays.sort(vowels);
		
System.out.println("After sorting "+Arrays.toString(vowels));

上記のコードスニペットの出力は次の通りです。

Before sorting [a, i, u, e, o]
After sorting [a, e, i, o, u]

StringはComparableインターフェースを実装しているため、自然な並び替えに使用することができます。もし他の方法でソートしたい場合は、Comparatorを渡すことでArrays.sort()のオーバーロードメソッドを使用できます。JavaのComparableとComparatorでこれらのソート技術について学びましょう。

「String」を「String Array」に変換する。

split()メソッドを使用することで、Stringを文字配列に変換することができます。デリミタ文字を使用して値が区切られた単一の文字列が入力された場合に便利です。

String str = "a,e,i,o,u";
String[] vowels = str.split(",");
System.out.println(Arrays.toString(vowels)); //[a, e, i, o, u]

文字列の配列を文字列に変換する

String配列をStringに変換するためには、Arrays.toString()メソッドを使用することができます。ただし、配列自体はtoString()メソッドを実装していないため、文字列表現を取得する場合はArraysクラスに頼るか、独自のカスタムコードを書く必要があります。

String[] vowels = { "a", "e", "i", "o", "u" };
System.out.println(vowels);
System.out.println(Arrays.toString(vowels));

出力は以下のようになります。

[Ljava.lang.String;@3d04a311
[a, e, i, o, u]

最初の出力は、以下のようにObjectクラスのtoString()メソッドの実装によるものです。

public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

JavaのString配列をリストに変換します。

Arrays.toList()メソッドを使用することで、文字列配列のリスト表現を取得することができます。なお、このリストは配列によって裏付けられているため、構造的な変更を加えるとjava.lang.UnsupportedOperationExceptionが発生します。

String[] vowels = { "a", "e", "i", "o", "u", "a", "o" };

List<String> vowelsList = Arrays.asList(vowels);
System.out.println("vowelsList = "+vowelsList);
//vowelsList.add("x"); //java.lang.UnsupportedOperationException

vowelsList.set(0, "x"); //allowed because no structural modification
System.out.println("vowelsList = "+vowelsList);

Javaの文字列配列は以上です。参考:配列Oracleドキュメンテーション。

コメントを残す 0

Your email address will not be published. Required fields are marked *