본문 바로가기
개발/Java

LinkedHashMap 이론 및 코드 정리

by 두리두리안 2021. 5. 26.

가장 큰 특징은 자료가 입력된 순서를 기억한다는 것입니다.

 

LinkedHashMapHashMap을 확장합니다. HashMap의 모든 기능을 사용하되,

 

Doubly-Linked List를 내부에 유지함으로써 입력된 자료의 순서를 보관한다.

 

물론 자료의 크기가 커지면 메모리 사용량이 늘어나겠지만, 순서를 간편하게 유지하기 위해서 이만한게 없다. 

 

Doubly-Linked List

 

노드와 노드가 서로 연결되어 있다는 점입니다

 

장점 : 양방향 탐색의 가장 큰 장점은 특정 인덱스 위치의 엘리먼트를 가져올 때와 반복자를 이용 해서 탐색할 때 드러납니다.

 

단점 : 우선 이전 노드를 지정하기 위한 변수를 하나 더 사용해야 합니다. 메모리를 더 많이 사용한다는 의미입니다. 또 구현이 조금 더 복잡해진다는 단점도 있다.

 

로그 

192.168.0.1 20210517000000 /main.do 200
192.168.0.1 20210517000000 /login.do 200
192.168.0.2 20210517000000 /main.do 200
192.168.0.2 20210517000000 /login.do 200
192.168.0.2 20210517000000 /login.do 200
192.168.0.3 20210517000000 /main.do 200
192.168.0.3 20210517000000 /main.do 200
192.168.0.3 20210517000000 /login.do 200
192.168.0.4 20210517000000 /main.do 500
192.168.0.4 20210517000000 /login.do 500
package HashMap_ex;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.Map;

public class LinkedList {
    public static void main(String[] args) {
        try {
            Map<String, Integer> map = new LinkedHashMap<>();

            String filePath = "C:\\Users\\최민준\\Desktop\\AccessLog_sample\\access.log";

            FileReader fileReader = new FileReader(filePath);
            BufferedReader bufferedReader = new BufferedReader(fileReader);

            String line;
            while ((line = bufferedReader.readLine()) != null) {
                String[] outPutLine = line.split(" ");
                String ip = outPutLine[0];
                String status = outPutLine[3];
                
                if (!map.containsKey(ip)) {
                    map.put(ip, 0);
                }
                map.put(ip, map.get(ip) + 1);

            }
            for (Map.Entry<String, Integer> key : map.entrySet()) {
                System.out.println("key 값 : " + key.getKey() + " | " + "Value 값 : " + key.getValue());
            }
        } catch (FileNotFoundException e) {
            System.out.println("파일을 찾을수 없다.");
        } catch (IOException e) {
            System.out.println(e);
        }

    }
}

 

참고 사이트 : https://coding-factory.tistory.com/557

 

[Java] 자바 TreeMap 사용법 & 예제 총정리

TreeMap이란? TreeMap은 이진트리를 기반으로 한 Map 컬렉션입니다. 같은 Tree구조로 이루어진 TreeSet과의 차이점은 TreeSet은 그냥 값만 저장한다면 TreeMap은 키와 값이 저장된 Map, Etnry를 저장한다는 점입

coding-factory.tistory.com

https://opentutorials.org/module/1335/8940

 

Doubly linked list (이중 연결 리스트) - Data Structure (자료구조)

소개 doubly linked list의 핵심은 노드와 노드가 서로 연결되어 있다는 점입니다. 아래 그림을 보면 단순 연결 리스트(linked list)와는 다르게 노드가 이전 노드(previous)와 다음 노드(next)로 구성되어 있

opentutorials.org

 

'개발 > Java' 카테고리의 다른 글

[JAVA] length | length() | size의 이론 및 실사용  (0) 2021.06.10
[Map] TreeMap 이론 및 코드 정리  (0) 2021.05.26
Hashtable 이론정리  (0) 2021.05.26
[Map] HashMap 이론 및 코드  (0) 2021.05.26
[Java] List 컬렉션  (0) 2021.05.22