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 |