HOWTO · Java

Java で文字列を ArrayList に変換する

この記事では、String を ArrayListJava に変換しようとしています。

このチュートリアルでは、Java での String から ArrayList への変換を紹介し、トピックを理解するためのサンプルコードをいくつかリストします。

文字列は文字のシーケンスとして定義され、ArrayList は順序付けられたデータのシーケンスを格納するために使用されます。文字列を ArrayList に変換するには、文字列から各文字を取得して ArrayList に追加する必要があります。

この記事では、これを行うためのさまざまな方法について説明します。

Java で charAt() および add() メソッドを使用して、文字列を ArrayList に変換する

簡単な解決策は、文字列の各文字を繰り返し処理し、その文字を ArrayList に追加することです。charAt() メソッドを使用して文字列の文字にアクセスし、add() メソッドを使用してそれらを ArrayList に追加できます。

このアプローチのコードを以下に示します。

import java.util.ArrayList;
public class SimpleTesting {
  public static void main(String[] args) {
    String s = "sample";
    ArrayList<Character> list = new ArrayList<Character>();
    for (int i = 0; i < s.length(); i++) {
      char currentCharacter = s.charAt(i); // getting the character at current index
      list.add(currentCharacter); // adding the character to the list
    }
    System.out.println("The String is: " + s);
    System.out.print("The ArrayList is: " + list);
  }
}

出力:

The String is: sample
The ArrayList is: [s, a, m, p, l, e]

より高度なことをしたい場合、このアプローチを使用することはできません。たとえば、文の単語だけを ArrayList に追加し、句読点を無視する場合は、さらに処理が必要になります。

Java で toCharArray() メソッドを使用して文字列を ArrayList に変換する

toCharArray() メソッドを文字列で使用して、文字列を文字配列に変換できます。次に、この文字配列を反復処理して、各文字を ArrayList に追加できます。

以下の例を参照してください。

import java.util.ArrayList;
public class Main {
  public static void main(String[] args) {
    String s = "sample";
    ArrayList<Character> list = new ArrayList<Character>();
    char[] characterArray = s.toCharArray();
    for (char c : characterArray) // iterating through the character array
      list.add(c);
    System.out.println("The String is: " + s);
    System.out.print("The ArrayList is: " + list);
  }
}

出力:

The String is: sample
The ArrayList is: [s, a, m, p, l, e]

これは、複雑なことをしたくない場合に使用できる簡単な方法です。ただし、前のセクションで説明したアプローチと同様に、文字列を ArrayList に変換する前に文字列に対して何らかの処理(句読点の削除など)を行う場合は、これを使用できません。

Java の split() メソッド

文字列 split() メソッドは、正規表現またはパターンをパラメータとして受け取り、一致するパターンに応じて文字列を文字列の配列に分割します。このメソッドは文字列配列を返します。

たとえば、文字列 string of wordssplit() メソッドに渡し、パターンが単一の空白(//s+ で示される)の場合、配列 ["string", "of", "words"]

import java.util.Arrays;
public class Main {
  public static void main(String[] args) {
    String s = "string of words";
    String[] strArr = s.split("\\s+"); // Splitting using whitespace
    System.out.println("The String is: " + s);
    System.out.print("The String Array after splitting is: " + Arrays.toString(strArr));
  }
}

出力:

The String is: string of words
The String Array after splitting is: [string, of, words]

Java で split() メソッドを使用して文字列を ArrayList に変換する

Arrays クラスの asList() メソッドを使用して、返された文字列の配列から ArrayList を作成できます。次のコードはこれを示しています。

import java.util.ArrayList;
import java.util.Arrays;
public class Main {
  public static void main(String[] args) {
    String s = "string of words";
    String[] strArr = s.split("\\s+"); // Splitting using whitespace
    ArrayList<String> list = new ArrayList<String>(Arrays.asList(strArr));
    System.out.println("The String is: " + s);
    System.out.print("The ArrayList is: " + list);
  }
}

出力:

The String is: string of words
The ArrayList is: [string, of, words]

Java で split() メソッドを使用して ArrayList を作成する

split() メソッドは、必要に応じて変更する必要があります。たとえば、文字列 sample の個々の文字の ArrayList を作成する場合、split() メソッドには別の正規表現が必要です。

import java.util.ArrayList;
import java.util.Arrays;
public class Main {
  public static void main(String[] args) {
    String s = "sample";
    String[] strArr = s.split(""); // Splitting string into individual characters
    ArrayList<String> list = new ArrayList<String>(Arrays.asList(strArr));
    System.out.println("The String is: " + s);
    System.out.print("The ArrayList is: " + list);
  }
}

出力:

The String is: sample
The ArrayList is: [s, a, m, p, l, e]

Java でユーザー文字列を ArrayList に変換する

カンマ区切りの従業員名を含む入力文字列をユーザーから取得し、各従業員の名前を含む ArrayList を作成する必要があるとします。

split() メソッドを使用して文字列を従業員名の配列に分割し、それを単に ArrayList に変換できます。ArrayList を作成する前にコンマを削除する必要があるため、split() メソッドはこのタスクに最適です。

以下の例を参照してください。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
  public static void main(String[] args) {
    String employeeNames;
    Scanner scanner = new Scanner(System.in);
    System.out.println("Enter employee names separated by comma");
    employeeNames = scanner.nextLine(); // taking user input
    scanner.close();
    String[] employeeNamesSplit = employeeNames.split(","); // Splitting names
    ArrayList<String> list = new ArrayList<String>(Arrays.asList(employeeNamesSplit));
    System.out.println("The String is: " + employeeNames);
    System.out.print("The ArrayList is: " + list);
  }
}

出力:

Enter employee names separated by comma
Justin, Jack, Jessica, Victor
The String is: Justin, Jack, Jessica, Victor
The ArrayList is: [Justin,  Jack,  Jessica,  Victor]

Java で文字列配列を ArrayList に変換する

配列はデータを順序付けて格納するのに最適ですが、サイズが限られているため、いくつかの重要な操作が制限される可能性があります。asList() メソッドを使用すると、文字列配列を ArrayList に簡単に変換できます。配列のすべての項目をリストにコピーするだけです。

次のコードはこれを示しています。

import java.util.ArrayList;
import java.util.Arrays;
public class Main {
  public static void main(String[] args) {
    String[] strArr = {"Hello", "Hola", "Ola"};
    ArrayList<String> strList = new ArrayList<String>(Arrays.asList(strArr));
    System.out.println("The String Array is: " + Arrays.toString(strArr));
    System.out.println("The Array List is: " + strList);
  }
}

出力:

The String Array is: [Hello, Hola, Ola]
The Array List is: [Hello, Hola, Ola]

Java で文字列を ArrayList に変換する

文字列は一般的にさまざまな目的で使用されますが、不変であり、変更を適用することはできません。一方、ArrayList はより多くの柔軟性を提供します。文字列の個々の文字から ArrayList を作成できます。または、より複雑な処理(コンマ区切りの文字列から名前の ArrayList を作成するなど)が必要な場合は、split() メソッドを使用することができます。

全体として、split() メソッドは、文字列を ArrayList に変換する最も簡単で最も好ましい方法です。