티스토리 뷰
안녕하세요. 이전 포스팅에서 HashMap에 대해 알아보았습니다.
간단히 복습하자면 put으로 데이타를 저장하고 get으로 데이타를 추출해서 사용합니다.
하지만 HashMap에는 저장한 순서대로 출력이 되지 않습니다.
만약 데이타의 입력순서대로 출력이 필요하게 될 상황이 생긴다면 어떻게 해야 할까요?
다행이 자바에는 LinkedHashMap가 있습니다. 이 메소드는 입력순서대로 출력을 제공합니다.
LinkedHashMap 은 기본적으로 HashMap을 상속받아 만들어져 있게 때문에 HashMap의 기능을 그대로 사용가능합니다.
대신 여기에 순서라는 개념이 들어간답니다. 좀 더 업그레이드된 기능이라고 보시면 됩니다.
기존 HashMap 은 <INPUT, OUTPUT> 처럼 INPUT 를 입력하여 OUTPUT 를 가져오는 방식입니다.
입력하는 순서대로 값을 추출할때 가져올수 있다면 정말 베스트겠지만 아쉽게 순서기능이 없기때문에
HashMap에서는 순서를 사용할수가 없습니다. 특별한 기준없이 출력이 된다는 거죠.
LinkedHashMap 을 사용하면 Iterator를 사용하여 값을 추출할때 순서에 맞게 가져올수 있는 장점이 있습니다.
입력시의 순서에 맞게 값을 가져올수 있습니다.
예제를 통해서 알아보겠습니다.
--------------------------------------------------------------------------------------------------
package test;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
HashMap<String,String> hashMap = new HashMap<String,String>();
hashMap.put("1","a");
hashMap.put("3","c");
hashMap.put("2","b");
hashMap.put("4","d");
hashMap.put("5","e");
System.out.println("-----------hashMap은 입력 순서대로 출력이 보장되지 않는다.");
System.out.println("-----------hashMap에 data를 담아서 출력---------");
for( Iterator linkitr = hashMap.values().iterator(); linkitr.hasNext(); ) {
System.out.print( linkitr.next() + " " );
}
System.out.println("\n-----------linkedHashMap은 입력 순서대로 출력이 보장된다.");
System.out.println("\n-----------linkedHashMap에 data를 담아서 출력---------");
LinkedHashMap<String,String> linkedHashMap = new LinkedHashMap<String,String>();
linkedHashMap.put("1","a");
linkedHashMap.put("3","c");
linkedHashMap.put("4","d");
linkedHashMap.put("5","e");
linkedHashMap.put("2","b");
for( Iterator linkitr = linkedHashMap.values().iterator(); linkitr.hasNext(); ) {
System.out.print( linkitr.next() + " " );
}
}
}
-----------------------------------------------------------------------------------------------
해당 소스를 컴파일하고 실행하면 결과값은 다음과 같습니다.
-----------hashMap은 입력 순서대로 출력이 보장되지 않는다.
-----------hashMap에 data를 담아서 출력---------
a b c d e
-----------linkedHashMap은 입력 순서대로 출력이 보장된다.
-----------linkedHashMap에 data를 담아서 출력---------
a c d e b
결과값을 보시면 알겠지만 HashMap는 입력 순서대로 출력이 되지 않는걸 알수있습니다.
hashMap.put("1","a"); //첫번째 입력
hashMap.put("3","c"); //두번째 입력
hashMap.put("2","b"); //세번째 입력
hashMap.put("4","d"); //네번째 입력
hashMap.put("5","e"); //다섯번째 입력
입력순서대로 출력이 되야하지만 결과값은
a //첫번째 입력값
b // 세번째 입력값
c // 두번째 입력값
d // 네번째 입력
e //다섯번째 입력
입력 순서대로 데이타가 출력이 되지 않는걸 확인할수 있습니다.
입력 순서대로 출력이 되었다면
a c b d e
이런식으로 출력이 되어야 하겠죠.
이런 결과값을 원할때 사용하는 메소드가 바로 linkHashMap 입니다.
이렇게 입력한 순대대로 결과을 추출 하고 싶을때는 linkHashMap을 사용하시면 됩니다.
결과값을 보시면 입력한 순서대로 출력이 된걸 확인할수 있습니다.
a c d e b
여기까지 예제를 통해서 java LinkedHashMap 클래스에 대해 알아봤습니다.
'JAVA(프로그래밍)' 카테고리의 다른 글
java Properties 사용하기 (0) | 2018.07.25 |
---|---|
java TreeMap 클래스 사용법 (0) | 2018.07.25 |
java HashMap 사용하는 방법 (0) | 2018.07.24 |
Java ArrayList 에 대해 알아보자 (0) | 2018.07.23 |
java replace 와 replaceAll 차이점에 대해 자세히 알아보자 (0) | 2018.07.21 |
- Total
- Today
- Yesterday
- java ArrayList
- java iterator
- java 메모장
- java Enumeration
- 자바 랩퍼
- java Properties
- java 네트워크
- java File
- 자바 패키지
- java tihs
- java replaceAll
- java 노트패드
- java텍스트파일저장
- 객체파일저장
- java substring
- java StringBuffer
- File Class
- java LinkedHashMap
- 자바
- java Vector
- java join
- java 소켓
- java배열
- java treemap
- java wrapper class
- java문자열자르기
- java wrapper
- linkHashMap
- Java
- java문자열저장
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |