본문 바로가기
개발/Java

[Map] HashMap 이론 및 코드

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

HashMap<K,V>

HashMap은 키(Key) , 값(Value) 을 하나의 쌍으로 묶어서 저장하는 컬렉션 클래스들을 구현하는 데 사용

쉽게 말해 key, value 값으로 저장하는 List 형태의 조상이라고 생각 하시면 됩니다.

해싱(hashing)이란 검색 방법을 사용하기 때문에 많은 양의 데이터를 검색하는데 있어서 뛰어난 성능을 보여줍니다.

  • 동기화가 포함되지 않으므로, 멀티 스레드 환경에서의 구현이 아니라면 HashTable에 비해 처리 속도가 빠르다.
  • List와 달리, Map에는 순서가 없다

HashMap 클래스는 Map 인터페이스를 구현하므로, 중복된 키로는 값을 저장할 수 없습니다.

하지만 같은 값을 다른 키로 저장하는 것은 가능합니다.

 

log 파일

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.HashMap;
import java.util.Map;

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

            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);
        }

    }
}

결과를 보면 값이 랜덤하게 나오는것을 볼수 있다. 이것을 정리하는 방법은 다른 포스팅에 정리

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

LinkedHashMap 이론 및 코드 정리  (0) 2021.05.26
Hashtable 이론정리  (0) 2021.05.26
[Java] List 컬렉션  (0) 2021.05.22
[Java] HashMap  (0) 2021.05.22
[Java] Method(4) - 외부 호출  (0) 2021.05.19