본문 바로가기

IT관련/자바

자바(JAVA) - 컬렉션 검색 과 HashMap

컬렉션을 순차적으로 검색할 때에는 Iterator<E> 인터페이스를 사용하면 유용하다

단, Iterator 인터페이스를 사용할 때에는 컬렉션의 <E> 매개 변수와 동일한 타입을 지정해야한다.


Iterator 객체 생성 예제

		Vector<Integer> ex = new Vector<Integer>();     //벡터 생성
		ex.add(1);
		ex.add(2);
		ex.add(3);

		Iterator<Integer> iex = ex.iterator();          //검색할 객체 리턴
		
		int exSum=0;
		while(iex.hasNext()) {
			int n = iex.next();
			exSum+=n;
		}
		System.out.println(exSum);

키를 통해 값을 찾아야하는 상황에는 HashMap<K,V> 컬렉션을 사용한다.

다른 컬렉션과는 달리 인덱스를 이용한 접근이 불가능하며, 키값을 검색해야만 알수 있다.


해시맵에서의 전체 검색은 다음과 같이 한다.

		HashMap<String, String> dic = new HashMap<String, String>();
		
		dic.put("baby","아기");
		dic.put("love","사랑");
		dic.put("apple","사과");
		
		Set<String> keys = dic.keySet();
		Iterator<String> it = keys.iterator();
		while (it.hasNext()) {
			String key = it.next();
			String value = dic.get(key);
			System.out.print("(" + key + "," + value + ")");
		}

keySet() 메소드로 Set 컬렉션 객체로 만들어 리턴

검색 가능하게 Iterator 인터페이스를 사용하여 리턴

값이있으면 키값을 key 변수에 next()메소드를 사용하여 키값 리턴

get() 메소드를 통해 값을 가져온다.

 

HashMap 사용 예제

		Scanner scanner = new Scanner(System.in);
		for (int i = 0; i < 2; i++) {
			System.out.print("찾고 싶은 단어 검색 >> ");
			String eng = scanner.next();
			String kor = dic.get(eng);
			if (kor == null) {
				System.out.println(eng + "없는 단어입니다");
			} else {
				System.out.println(kor);
			}
		}

위와 같이 해시맵을 사용하여 키값을 통해 값을 가져오는 방법을 구현할 수 있다.