JAVA - 9
카테고리: java
StringTokenizer.java
StringTokenizer
클래스는 문자열을 지정된 구분자(delimiter)를 기준으로 분리하는 역할을 합니다. 위의 코드에서는 문자열 “홍길동/장화/홍련/콩쥐/팥쥐”를 구분자 ‘/’를 사용하여 분리합니다.
StringTokenizer
객체를 생성하면 해당 문자열은 구분자에 따라 토큰(token)으로 분리됩니다. hasMoreTokens
메소드는 객체에 다음 토큰이 있는지 확인하고, nextToken
메소드는 다음 토큰을 가져옵니다.
따라서 위의 코드는 문자열을 구분자 ‘/’를 기준으로 분리하여 각각의 토큰을 출력합니다. 실행 결과는 다음과 같을 것입니다:
출력결과
홍길동
장화
홍련
콩쥐
팥쥐
StringTokenizer 및 HashMap
먼저 StringTokenizer
를 사용하여 문자열 “name=kitae&addr=seoul&age=21”을 구분자 ‘&’를 기준으로 분리합니다. hasMoreTokens
메소드로 다음 토큰이 있는지 확인하고, nextToken
메소드로 다음 토큰을 가져와 출력합니다.
그리고 HashMap
을 사용하여 키-값 쌍으로 데이터를 저장합니다. 각각의 키와 값은 put
메소드를 사용하여 추가됩니다. 이후 entrySet
메소드를 사용하여 키-값 쌍의 집합(Set)을 얻어옵니다. 그리고 iterator
를 사용하여 요소들을 순차적으로 접근하며 출력합니다.
실행 결과는 다음과 같을 것입니다:
출력결과
name=kitae
addr=seoul
age=21
name=kitan
addr=seoul
age=21
HashMap
은 각 키를 유일하게 가지므로 키-값 쌍도 유일합니다. 따라서 같은 키로 여러 번 put
을 호출하면 최종적으로는 마지막 값으로 덮어씌워집니다.
ArrayList.java
ArrayList를 사용해 이렇게 작성하면 에러는 나지 않지만 경고가 발생합니다.
ArrayList is a raw type. References to generic type ArrayList<E> should be parameterized
Type safety: The method add(Object) belongs to the raw type ArrayList.References to generic type ArrayList<E> should be parameterized
이 경고들은 제네릭 타입을 사용하지 않고 ArrayList
를 사용하고 있다는 것을 알려줍니다. 제네릭 타입은 컴파일 시간에 타입 안정성을 보장해주는 기능입니다. 따라서, 이 경고가 발생하면 제네릭 타입을 명시적으로 사용하여 타입 안정성을 확보해야 합니다. 제네릭을 사용하면 컴파일러가 타입 체크를 수행하고 잠재적인 타입 관련 오류를 미리 방지할 수 있습니다.
제네릭을 사용하여 수정한 ArrayList.java
SimplePair - 제네릭 활용
SimplePair
라는 제네릭 클래스를 정의하고 활용하는 예제입니다.
SimplePair
클래스는 제네릭 타입 T
를 가지며, first
와 second
라는 두 개의 필드를 갖습니다. 이 클래스는 두 개의 값을 저장하고 조회할 수 있는 기능을 제공합니다.
위의 클래스에서 제네릭 타입 T
는 실제 사용될 때 구체적인 타입으로 대체됩니다. 즉, SimplePair<String>
으로 인스턴스를 생성하면 T
는 String
으로 대체됩니다.
main
메소드에서는 SimplePair<String>
타입의 객체를 생성하여 “apple”과 “tomato” 값을 저장하고, getFirst()
와 getSecond()
메소드를 통해 저장된 값을 조회하여 출력합니다.
제네릭 클래스는 타입 파라미터 T
를 사용하여 클래스 내부에서 사용되는 데이터의 타입을 일반화합니다. 이를 통해 클래스의 재사용성과 타입 안정성을 높일 수 있습니다. 예를 들어, SimplePair<Integer>
로 인스턴스를 생성하면 T
는 Integer
로 대체되어 정수형 데이터를 저장하고 조회할 수 있습니다.
댓글 남기기