JAVA - 9

Date:

카테고리:

태그:

img

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를 사용해 이렇게 작성하면 에러는 나지 않지만 경고가 발생합니다.

  1. ArrayList is a raw type. References to generic type ArrayList<E> should be parameterized
  2. 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를 가지며, firstsecond라는 두 개의 필드를 갖습니다. 이 클래스는 두 개의 값을 저장하고 조회할 수 있는 기능을 제공합니다.

위의 클래스에서 제네릭 타입 T는 실제 사용될 때 구체적인 타입으로 대체됩니다. 즉, SimplePair<String>으로 인스턴스를 생성하면 TString으로 대체됩니다.

main 메소드에서는 SimplePair<String> 타입의 객체를 생성하여 “apple”과 “tomato” 값을 저장하고, getFirst()getSecond() 메소드를 통해 저장된 값을 조회하여 출력합니다.

제네릭 클래스는 타입 파라미터 T를 사용하여 클래스 내부에서 사용되는 데이터의 타입을 일반화합니다. 이를 통해 클래스의 재사용성과 타입 안정성을 높일 수 있습니다. 예를 들어, SimplePair<Integer>로 인스턴스를 생성하면 TInteger로 대체되어 정수형 데이터를 저장하고 조회할 수 있습니다.


java 카테고리 내 다른 글 보러가기

댓글 남기기