소개
Java 프로그래밍에서 문자열 조작과 ArrayList 와 같은 컬렉션 작업은 필수적인 기술입니다. 이 튜토리얼은 Java 에서 구분 기호를 사용하여 문자열을 ArrayList 로 분할하는 과정을 안내합니다. 이 랩을 마치면 텍스트 데이터를 관리 가능한 조각으로 나누어 유연한 컬렉션에 저장하는 방법을 이해하게 될 것입니다. 이를 통해 Java 애플리케이션에서 다양한 데이터 처리 작업을 수행할 수 있습니다.
Java 프로그래밍에서 문자열 조작과 ArrayList 와 같은 컬렉션 작업은 필수적인 기술입니다. 이 튜토리얼은 Java 에서 구분 기호를 사용하여 문자열을 ArrayList 로 분할하는 과정을 안내합니다. 이 랩을 마치면 텍스트 데이터를 관리 가능한 조각으로 나누어 유연한 컬렉션에 저장하는 방법을 이해하게 될 것입니다. 이를 통해 Java 애플리케이션에서 다양한 데이터 처리 작업을 수행할 수 있습니다.
문자열 분할에 들어가기 전에, 이 랩에서 사용할 두 가지 주요 구성 요소를 이해해 봅시다.
Java 에서 String 은 문자 시퀀스입니다. Java 프로그래밍에서 가장 일반적으로 사용되는 클래스 중 하나입니다. 문자열은 불변 (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()이라는 내장 메서드를 제공하여 구분 기호를 기반으로 문자열을 여러 부분으로 나눌 수 있도록 합니다. 이 메서드는 구분 기호로 나뉜 부분 문자열을 포함하는 문자열 배열을 반환합니다.
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 배열은 다섯 개의 요소를 포함하며, 각 요소는 원래 쉼표로 구분된 문자열의 과일 이름을 나타냅니다.
다음 단계에서는 이 배열을 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 사용의 장점 중 하나인 컬렉션에 새 요소를 쉽게 추가할 수 있는 기능을 보여줍니다.
배열과 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+") // 하나 이상의 숫자로 분할
분할 제한: 두 번째 매개변수는 분할 횟수를 제한합니다.
string.split("-", 3) // 최대 3 부분 (2 분할)
정규 표현식을 구분 기호로 사용할 때 특정 문자는 특수한 의미를 가지며 백슬래시 (\) 로 이스케이프해야 합니다. 백슬래시 자체는 Java 문자열에서 이스케이프해야 하므로 이중 백슬래시 (\\) 가 사용됩니다.
일부 일반적인 특수 문자:
\d - 모든 숫자와 일치합니다 (Java 에서는 \\d로 작성).\s - 모든 공백 문자와 일치합니다 (Java 에서는 \\s로 작성).. - 모든 문자와 일치합니다 (Java 에서는 \\.)+, *, ? - 수량자 (quantifiers) (Java 에서는 \\+, \\*, \\?로 작성)이 예제는 Java 애플리케이션에서 다양한 문자열 형식 및 요구 사항을 처리하기 위한 split() 메서드의 다재다능함을 보여줍니다.
이 랩에서는 Java 에서 구분 기호를 사용하여 문자열을 ArrayList 로 분할하는 방법을 배웠습니다. 다음 사항에 대한 실질적인 경험을 얻었습니다.
split() 메서드를 사용하여 구분 기호를 기반으로 문자열을 나누기이러한 문자열 조작 기술은 Java 프로그래밍의 기본이며 파일에서 데이터 구문 분석, 사용자 입력 처리, CSV 또는 JSON 과 같은 구조화된 텍스트 형식 작업 등 다양한 시나리오에서 도움이 될 것입니다.
정규 표현식의 강력함과 ArrayList 와 같은 Java 컬렉션을 결합하여 애플리케이션의 요구 사항을 충족하도록 문자열 데이터를 효율적으로 처리하고 변환할 수 있습니다.