contains() 메서드란?
Java의 String 클래스가 제공하는 contains() 메서드는 문자열을 매개변수로 받아, 현재 String 객체 안에 해당 문자열이 포함되어 있는지 확인합니다. 문자열이 포함되어 있으면 true, 그렇지 않으면 false를 반환합니다.
이 메서드를 활용하면 ArrayList에 저장된 여러 문자열 중에서 원하는 키워드를 손쉽게 찾을 수 있습니다.
ArrayList에서 문자열 검색하는 절차
- 검색 대상이 되는 ArrayList 객체를 준비합니다.
- for-each 루프를 사용하여 ArrayList의 각 요소를 하나씩 순회합니다.
- 각 요소가 찾고자 하는 문자열을 포함하는지 contains() 메서드로 확인합니다.
- 조건을 만족하는 요소라면 화면에 출력합니다.
예제 코드
import java.util.ArrayList;
public class FindingString {
public static void main(String[] args) {
// ArrayList 객체 생성 및 요소 추가
ArrayList<String> list = new ArrayList<String>();
list.add("JavaFX");
list.add("Java");
list.add("WebGL");
list.add("OpenCV");
list.add("OpenNLP");
list.add("JOGL");
list.add("Hadoop");
list.add("HBase");
list.add("Java Script");
list.add("Flume");
list.add("Mahout");
list.add("Impala");
System.out.println("ArrayList의 내용:");
for (String element : list) {
if (element.contains("Java")) {
System.out.println(element);
}
}
}
}실행 결과
ArrayList의 내용: JavaFX Java Java Script
위 예제에서는 "Java"라는 키워드를 포함하는 모든 요소, 즉 "JavaFX", "Java", "Java Script" 세 개의 문자열이 출력됩니다. contains()는 부분 일치를 검사하기 때문에 키워드가 문자열 중간에 있어도 정상적으로 찾아냅니다.
참고: Stream API를 활용한 대안
Java 8 이상에서는 스트림(Stream)을 사용해 같은 작업을 더 간결하게 처리할 수도 있습니다.
list.stream()
.filter(element -> element.contains("Java"))
.forEach(System.out::println);filter()로 조건에 맞는 요소만 걸러낸 뒤 forEach()로 출력하는 방식으로, 코드가 짧아지고 가독성이 좋아진다는 장점이 있습니다.