소개
이 랩에서는 Java 에서 특정 요소가 컬렉션 내에 존재하는지 확인하는 방법을 배우게 됩니다. 모든 컬렉션 유형에서 사용할 수 있는 contains() 메서드를 사용하는 데 중점을 둘 것입니다. 다양한 요소 유형으로 contains()를 사용하는 연습을 하고 null 요소를 처리하는 방법을 배우게 됩니다. 이 랩을 마치면 Java 컬렉션 내에서 요소의 존재 여부를 능숙하게 판단할 수 있게 됩니다.
이 랩에서는 Java 에서 특정 요소가 컬렉션 내에 존재하는지 확인하는 방법을 배우게 됩니다. 모든 컬렉션 유형에서 사용할 수 있는 contains() 메서드를 사용하는 데 중점을 둘 것입니다. 다양한 요소 유형으로 contains()를 사용하는 연습을 하고 null 요소를 처리하는 방법을 배우게 됩니다. 이 랩을 마치면 Java 컬렉션 내에서 요소의 존재 여부를 능숙하게 판단할 수 있게 됩니다.
이 단계에서는 Java 에서 특정 요소가 컬렉션 내에 존재하는지 확인하는 방법을 살펴보겠습니다. 컬렉션은 여러 요소를 단일 단위로 그룹화하는 데 사용되는 기본적인 데이터 구조입니다. Java 는 List, Set, Map 과 같은 다양한 유형의 컬렉션을 제공합니다.
컬렉션으로 작업할 때 흔히 사용되는 작업 중 하나는 특정 요소가 있는지 확인하는 것입니다. 모든 컬렉션 유형의 루트 인터페이스인 Java 의 Collection 인터페이스는 이 목적을 위해 편리한 메서드인 contains()를 제공합니다.
contains() 메서드는 확인하려는 요소를 인수로 받아들이고 부울 값 (boolean value) 을 반환합니다. 요소가 컬렉션에 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
ArrayList (List 의 일반적인 유형) 와 함께 contains() 메서드를 사용하는 방법을 보여주는 간단한 Java 프로그램을 만들어 보겠습니다.
WebIDE 편집기에서 HelloJava.java 파일을 엽니다 (아직 열려 있지 않은 경우).
파일의 전체 내용을 다음 코드로 바꿉니다.
import java.util.ArrayList;
import java.util.List;
public class HelloJava {
public static void main(String[] args) {
// Create a List of strings
List<String> fruits = new ArrayList<>();
// Add some fruits to the list
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
fruits.add("Mango");
// Check if the list contains "Banana"
boolean hasBanana = fruits.contains("Banana");
System.out.println("Does the list contain Banana? " + hasBanana);
// Check if the list contains "Grape"
boolean hasGrape = fruits.contains("Grape");
System.out.println("Does the list contain Grape? " + hasGrape);
}
}
이 새로운 코드를 자세히 살펴보겠습니다.
import java.util.ArrayList; 및 import java.util.List;: 이 줄은 List 및 ArrayList 로 작업하는 데 필요한 클래스를 가져옵니다.List<String> fruits = new ArrayList<>();: 이 줄은 String 객체를 담을 수 있는 새 ArrayList를 생성하고 fruits라는 변수에 할당합니다.fruits.add("Apple"); 및 유사한 줄: 이 줄은 fruits 목록에 요소 (과일 이름을 나타내는 문자열) 를 추가합니다.boolean hasBanana = fruits.contains("Banana");: 이 줄은 fruits 목록에서 contains() 메서드를 호출하여 문자열 "Banana"가 있는지 확인합니다. 결과 (true 또는 false) 는 부울 변수 hasBanana에 저장됩니다.System.out.println("Does the list contain Banana? " + hasBanana);: 이 줄은 "Banana"에 대한 확인 결과를 출력합니다.boolean hasGrape = fruits.contains("Grape"); 및 다음 println: 이 줄은 목록에 없는 "Grape"에 대해 동일한 확인을 수행합니다.파일을 저장합니다 (Ctrl+S 또는 Cmd+S).
터미널에서 수정된 프로그램을 컴파일합니다.
javac HelloJava.java
컴파일된 프로그램을 실행합니다.
java HelloJava
다음과 유사한 출력을 볼 수 있습니다.
Does the list contain Banana? true
Does the list contain Grape? false
이 출력은 contains() 메서드가 "Banana"가 목록에 있고 "Grape"가 없음을 올바르게 식별했음을 확인합니다.
요소의 존재 여부를 확인하는 방법을 이해하는 것은 Java 에서 컬렉션으로 작업할 때 기본적인 기술입니다. 다음 단계에서는 contains() 메서드의 더 많은 측면과 다양한 시나리오에서 어떻게 동작하는지 살펴보겠습니다.
이전 단계에서는 String 객체의 List와 함께 contains() 메서드를 사용했습니다. contains() 메서드는 다재다능하며 숫자, 사용자 정의 객체 또는 다른 컬렉션과 같이 다양한 유형의 요소를 저장하는 컬렉션과 함께 사용할 수 있습니다.
contains()를 사용할 때 Java 는 검색 중인 요소가 일치하는지 확인하기 위해 컬렉션 내의 객체의 equals() 메서드에 의존합니다. 기본 유형 (예: int, double, boolean) 의 경우 해당 래퍼 클래스 (Integer, Double, Boolean) 가 사용되며 해당 equals() 메서드는 값을 비교합니다. 객체의 경우 기본 equals() 메서드는 두 객체 참조가 동일한 메모리 위치를 가리키는지 확인합니다. 그러나 많은 클래스 (예: String, Integer 등) 는 객체의 실제 내용 또는 값을 비교하기 위해 equals() 메서드를 재정의합니다.
프로그램을 수정하여 Integer 객체의 List로 작업하고 contains()가 어떻게 동작하는지 살펴보겠습니다.
WebIDE 편집기에서 HelloJava.java 파일을 엽니다.
현재 코드를 다음으로 바꿉니다.
import java.util.ArrayList;
import java.util.List;
public class HelloJava {
public static void main(String[] args) {
// Create a List of integers
List<Integer> numbers = new ArrayList<>();
// Add some numbers to the list
numbers.add(10);
numbers.add(25);
numbers.add(5);
numbers.add(50);
// Check if the list contains 25
boolean hasTwentyFive = numbers.contains(25);
System.out.println("Does the list contain 25? " + hasTwentyFive);
// Check if the list contains 100
boolean hasOneHundred = numbers.contains(100);
System.out.println("Does the list contain 100? " + hasOneHundred);
// Check if the list contains the Integer object with value 5
boolean hasFiveObject = numbers.contains(Integer.valueOf(5));
System.out.println("Does the list contain Integer object with value 5? " + hasFiveObject);
}
}
이 코드에서:
Integer 객체를 특별히 담는 List를 생성합니다: List<Integer> numbers = new ArrayList<>();.numbers.add()를 사용하여 목록에 정수 값을 추가합니다. Java 는 기본 int 값 (10, 25, 5, 50) 을 Integer 객체로 자동 변환합니다 (이것을 오토박싱 (autoboxing) 이라고 합니다).numbers.contains(25) 및 numbers.contains(100)을 사용하여 정수 값의 존재 여부를 확인합니다. 다시 말하지만, Java 는 확인을 수행하기 전에 기본 int 값 25 와 100 을 Integer 객체로 오토박싱합니다.Integer.valueOf(5)를 사용하여 명시적으로 Integer 객체를 생성하고 이 특정 객체가 목록에 있는지 확인합니다.파일을 저장합니다.
터미널에서 프로그램을 컴파일합니다.
javac HelloJava.java
프로그램을 실행합니다.
java HelloJava
다음과 유사한 출력을 볼 수 있습니다.
Does the list contain 25? true
Does the list contain 100? false
Does the list contain Integer object with value 5? true
이는 contains()가 Integer 객체와 함께 올바르게 작동하여 해당 값을 비교함을 보여줍니다. contains() 메서드는 컬렉션의 요소와 검색 중인 요소의 equals() 메서드를 효과적으로 사용합니다.
다음 단계에서는 특수한 경우인 contains() 메서드로 null 요소를 처리하는 방법을 살펴보겠습니다.
Java 에서 컬렉션은 때때로 null 요소를 포함할 수 있습니다. contains() 메서드가 null을 처리할 때 어떻게 동작하는지 이해하는 것이 중요합니다.
다행히 contains() 메서드는 null 요소를 적절하게 처리하도록 설계되었습니다. 컬렉션에 null이 포함된 경우 contains(null)을 호출하면 true를 반환합니다. 컬렉션에 null이 포함되어 있지 않으면 false를 반환합니다. 이는 equals()가 일반적으로 null에 대해 구현되는 방식과 일치합니다 (모든 객체의 equals(null)은 false를 반환해야 하지만, null.equals(anyObject)는 컬렉션의 contains 구현에서 내부적으로 처리되지 않으면 NullPointerException을 발생시킵니다).
프로그램을 수정하여 null 요소를 포함하고 확인해 보겠습니다.
WebIDE 편집기에서 HelloJava.java 파일을 엽니다.
현재 코드를 다음으로 바꿉니다.
import java.util.ArrayList;
import java.util.List;
public class HelloJava {
public static void main(String[] args) {
// Create a List that can contain null
List<String> mixedList = new ArrayList<>();
// Add some elements, including null
mixedList.add("First");
mixedList.add(null); // Adding a null element
mixedList.add("Second");
mixedList.add(null); // Adding another null element
mixedList.add("Third");
// Check if the list contains null
boolean hasNull = mixedList.contains(null);
System.out.println("Does the list contain null? " + hasNull);
// Check if the list contains a non-existent element
boolean hasFourth = mixedList.contains("Fourth");
System.out.println("Does the list contain Fourth? " + hasFourth);
// Check if the list contains "First"
boolean hasFirst = mixedList.contains("First");
System.out.println("Does the list contain First? " + hasFirst);
}
}
이 코드에서:
mixedList라는 List를 생성합니다.String 요소와 함께 mixedList.add(null);을 사용하여 명시적으로 null을 추가합니다.mixedList.contains(null)을 사용하여 목록에 null 값이 있는지 확인합니다.null 검사와 함께 결과를 확인합니다.파일을 저장합니다.
터미널에서 프로그램을 컴파일합니다.
javac HelloJava.java
프로그램을 실행합니다.
java HelloJava
다음과 유사한 출력을 볼 수 있습니다.
Does the list contain null? true
Does the list contain Fourth? false
Does the list contain First? true
이 출력은 contains()가 목록 내에서 null의 존재를 올바르게 식별함을 확인합니다. 컬렉션이 null을 포함할 수 있다는 점 (특정 컬렉션 유형 및 사용 방식에 따라 다름) 을 알고, contains()가 이를 확인하는 신뢰할 수 있는 방법을 제공하는 것이 중요합니다.
이제 contains() 메서드를 사용하여 다양한 데이터 유형과 null의 특수한 경우를 포함하여 Java 컬렉션에서 요소를 확인하는 방법을 배웠습니다. 이는 Java 프로그램에서 컬렉션으로 작업하는 데 유용한 도구입니다.
이 Lab 에서는 Java 에서 contains() 메서드를 사용하여 컬렉션에 특정 요소가 포함되어 있는지 확인하는 방법을 배웠습니다. Collection 인터페이스를 통해 사용할 수 있는 이 메서드가 요소의 존재 여부를 나타내는 부울 값을 반환하는 것을 확인했습니다. ArrayList를 사용하여 사용법을 시연하고 기존 및 존재하지 않는 요소를 올바르게 식별하는 방법을 관찰했습니다.
또한 contains() 메서드가 다양한 데이터 유형으로 어떻게 작동하는지, 그리고 컬렉션 내에서 null 요소를 처리하는 방법을 살펴보았습니다. 이 실습 경험은 Java 컬렉션으로 작업할 때 기본적인 작업에 대한 실질적인 이해를 제공했습니다.