はじめに
Java プログラミングにおいて、文字列の操作や、ArrayList のようなコレクションの利用は不可欠なスキルです。このチュートリアルでは、Java で区切り文字を使用して文字列を ArrayList に分割するプロセスを解説します。この実験(Lab)の終わりには、テキストデータを扱いやすい部分に分解し、柔軟なコレクションに格納する方法を理解できるようになります。これにより、Java アプリケーションで様々なデータ処理タスクに取り組むことが可能になります。
Java プログラミングにおいて、文字列の操作や、ArrayList のようなコレクションの利用は不可欠なスキルです。このチュートリアルでは、Java で区切り文字を使用して文字列を ArrayList に分割するプロセスを解説します。この実験(Lab)の終わりには、テキストデータを扱いやすい部分に分解し、柔軟なコレクションに格納する方法を理解できるようになります。これにより、Java アプリケーションで様々なデータ処理タスクに取り組むことが可能になります。
文字列の分割に入る前に、この実験(Lab)で扱う 2 つの主要なコンポーネントについて理解しておきましょう。
Java における String は、文字のシーケンスです。Java プログラミングで最も一般的に使用されるクラスの 1 つです。文字列はイミュータブル(immutable)であり、一度作成されると、その値を変更することはできません。
例:
String greeting = "Hello, World!";
ArrayList は、Java におけるサイズ変更可能な配列の実装です。固定サイズの通常の配列とは異なり、ArrayList は動的に拡張または縮小できます。これらは Java Collections Framework の一部であり、格納された要素を操作するためのさまざまなメソッドを提供します。
ArrayList を使用するには、java.utilパッケージからインポートする必要があります。
import java.util.ArrayList;
ArrayList の作成:
ArrayList<String> fruits = new ArrayList<>();
fruits.add("Apple");
fruits.add("Banana");
それでは、これらの概念を使い始めるために、新しい Java ファイルを作成しましょう。以下の手順に従ってください。
StringSplitDemo.javaという名前の新しいファイルを作成しますpublic class StringSplitDemo {
public static void main(String[] args) {
// We will add our code here
System.out.println("String Split Demo");
}
}
javac StringSplitDemo.java
java StringSplitDemo
次のような出力が表示されるはずです。
String Split Demo
これにより、基本的な Java のセットアップが正しく機能していることが確認できます。次のステップでは、split()メソッドを使用して文字列を分割する方法を学びます。
Java には、文字列を区切り文字に基づいて分割できるsplit()という String クラスの組み込みメソッドが用意されています。このメソッドは、区切り文字で分割された部分文字列を含む文字列の配列を返します。
split()メソッドは、正規表現(regular expression)をパラメータとして受け取り、部分文字列の配列を返します。
String[] split(String regex)
文字列を分割するコードを含めるために、StringSplitDemo.javaファイルを変更しましょう。エディタでファイルを開き、以下のように更新します。
public class StringSplitDemo {
public static void main(String[] args) {
// Create a string with comma-separated values
String csvData = "apple,banana,orange,grape,mango";
System.out.println("Original string: " + csvData);
// Split the string using comma as delimiter
String[] fruits = csvData.split(",");
// Print the resulting array
System.out.println("\nAfter splitting:");
System.out.println("Number of elements: " + fruits.length);
// Display each element of the array
for (int i = 0; i < fruits.length; i++) {
System.out.println("Element " + i + ": " + fruits[i]);
}
}
}
ファイルを保存し、プログラムを実行します。
javac StringSplitDemo.java
java StringSplitDemo
次のような出力が表示されるはずです。
Original string: apple,banana,orange,grape,mango
After splitting:
Number of elements: 5
Element 0: apple
Element 1: banana
Element 2: orange
Element 3: grape
Element 4: mango
これは、split()メソッドが元の文字列を各カンマで分割し、各部分文字列を配列に配置する方法を示しています。配列fruitsには、元のカンマ区切りの文字列から各果物の名前を表す 5 つの要素が含まれるようになりました。
次のステップでは、この配列を ArrayList に変換し、データの操作をより柔軟にします。
文字列を配列に分割したので、それを ArrayList に変換しましょう。ArrayList は、動的なサイズ変更や、要素の追加、削除、操作に便利なメソッドなど、配列よりも柔軟性を提供します。
Java で配列を ArrayList に変換する方法はいくつかあります。
Arrays.asList()と ArrayList コンストラクタを使用するStringSplitDemo.javaファイルを更新して、ArrayList への変換を含めましょう。java.utilパッケージから必要なクラスをインポートする必要があります。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class StringSplitDemo {
public static void main(String[] args) {
// Create a string with comma-separated values
String csvData = "apple,banana,orange,grape,mango";
System.out.println("Original string: " + csvData);
// Split the string using comma as delimiter
String[] fruits = csvData.split(",");
// Print the resulting array
System.out.println("\nAfter splitting into array:");
System.out.println("Number of elements: " + fruits.length);
// Display each element of the array
for (int i = 0; i < fruits.length; i++) {
System.out.println("Array Element " + i + ": " + fruits[i]);
}
// Method 1: Convert to ArrayList using Arrays.asList() and the ArrayList constructor
ArrayList<String> fruitList1 = new ArrayList<>(Arrays.asList(fruits));
// Method 2: Convert to ArrayList using a loop
ArrayList<String> fruitList2 = new ArrayList<>();
for (String fruit : fruits) {
fruitList2.add(fruit);
}
// Display the ArrayList created using Method 1
System.out.println("\nAfter converting to ArrayList (Method 1):");
System.out.println("Number of elements: " + fruitList1.size());
for (int i = 0; i < fruitList1.size(); i++) {
System.out.println("ArrayList Element " + i + ": " + fruitList1.get(i));
}
// Demonstrate adding a new element to the ArrayList
fruitList1.add("pineapple");
System.out.println("\nAfter adding a new element to ArrayList:");
System.out.println("Number of elements: " + fruitList1.size());
System.out.println("New element: " + fruitList1.get(fruitList1.size() - 1));
}
}
ファイルを保存し、プログラムを実行します。
javac StringSplitDemo.java
java StringSplitDemo
次のような出力が表示されるはずです。
Original string: apple,banana,orange,grape,mango
After splitting into array:
Number of elements: 5
Array Element 0: apple
Array Element 1: banana
Array Element 2: orange
Array Element 3: grape
Array Element 4: mango
After converting to ArrayList (Method 1):
Number of elements: 5
ArrayList Element 0: apple
ArrayList Element 1: banana
ArrayList Element 2: orange
ArrayList Element 3: grape
ArrayList Element 4: mango
After adding a new element to ArrayList:
Number of elements: 6
New element: pineapple
この例では、文字列配列を ArrayList に変換する方法を示し、ArrayList を使用する利点の 1 つである、コレクションに新しい要素を簡単に追加できることを示しています。
配列と ArrayList の違いに注意してください。
add()、remove()、get()などのメソッドを提供します次のステップでは、文字列を分割するためのさまざまな区切り文字を調べます。
前のステップでは、文字列を分割するためにカンマを区切り文字として使用しました。ただし、split()メソッドは、任意の正規表現(regular expression)を区切り文字として受け入れるため、さまざまなパターンに基づいて文字列を分割できます。
さまざまな区切り文字を試すために、新しい Java ファイルを作成しましょう。DelimiterDemo.javaという名前のファイルを作成し、次の内容を記述します。
import java.util.ArrayList;
import java.util.Arrays;
public class DelimiterDemo {
public static void main(String[] args) {
// 1. Splitting by a single character
String commaString = "red,green,blue,yellow";
ArrayList<String> colors = new ArrayList<>(Arrays.asList(commaString.split(",")));
System.out.println("1. Splitting by comma:");
for (String color : colors) {
System.out.println(" " + color);
}
// 2. Splitting by space
String spaceString = "Java Python C++ JavaScript Ruby";
ArrayList<String> languages = new ArrayList<>(Arrays.asList(spaceString.split(" ")));
System.out.println("\n2. Splitting by space:");
for (String language : languages) {
System.out.println(" " + language);
}
// 3. Splitting by multiple characters
String pipeColonString = "name|John:age|30:city|New York";
ArrayList<String> personData = new ArrayList<>(Arrays.asList(pipeColonString.split("[|:]")));
System.out.println("\n3. Splitting by multiple characters (| or :):");
for (String data : personData) {
System.out.println(" " + data);
}
// 4. Splitting by digits
String digitsString = "apple123banana456cherry";
ArrayList<String> fruits = new ArrayList<>(Arrays.asList(digitsString.split("\\d+")));
System.out.println("\n4. Splitting by digits:");
for (String fruit : fruits) {
System.out.println(" " + fruit);
}
// 5. Limiting the number of splits
String limitString = "one-two-three-four-five";
ArrayList<String> limitedParts = new ArrayList<>(Arrays.asList(limitString.split("-", 3)));
System.out.println("\n5. Limiting the number of splits (limit=3):");
for (String part : limitedParts) {
System.out.println(" " + part);
}
}
}
ファイルを保存し、プログラムを実行します。
javac DelimiterDemo.java
java DelimiterDemo
次のような出力が表示されるはずです。
1. Splitting by comma:
red
green
blue
yellow
2. Splitting by space:
Java
Python
C++
JavaScript
Ruby
3. Splitting by multiple characters (| or :):
name
John
age
30
city
New York
4. Splitting by digits:
apple
banana
cherry
5. Limiting the number of splits (limit=3):
one
two
three-four-five
単一文字区切り文字: カンマやスペースなど、最も単純な形式です。
string.split(",")
文字クラス区切り文字: セット内の任意の文字で分割します。
string.split("[|:]") // '|'または':'のいずれかで分割
正規表現区切り文字: より複雑なパターン用です。
string.split("\\d+") // 1 つ以上の数字で分割
分割の制限: 2 番目のパラメータは、分割の数を制限します。
string.split("-", 3) // 最大 3 つの部分(2 つの分割)
正規表現を区切り文字として使用する場合、特定の文字には特別な意味があり、バックスラッシュ(\)でエスケープする必要があります。バックスラッシュ自体も Java 文字列内でエスケープする必要があるため、二重バックスラッシュ(\\)を使用することになります。
一般的な特殊文字:
\d - 任意の数字に一致します(Java では\\dと記述します)\s - 任意の空白文字に一致します(Java では\\sと記述します). - 任意の文字に一致します(Java では\\. と記述します)+, *, ? - 量指定子(Java では\\+、\\*、\\?と記述します)これらの例は、Java アプリケーションでさまざまな文字列形式と要件を処理するためのsplit()メソッドの多様性を示しています。
この実験(Lab)では、Java で区切り文字を使用して文字列を ArrayList に分割する方法を学びました。以下の点について実践的な経験を積みました。
split()メソッドを使用して、区切り文字に基づいて文字列を分割するこれらの文字列操作スキルは、Java プログラミングの基本であり、ファイルからのデータの解析、ユーザー入力の処理、CSV や JSON などの構造化テキスト形式の操作など、さまざまなシナリオで役立ちます。
正規表現の力と、ArrayList のような Java コレクションを組み合わせることで、アプリケーションの要件を満たすために、文字列データを効率的に処理および変換できます。