log.txt




1) Map의 특징 

=> key 와 Value를 쌍으로 저장하는 자료구

=> 중복된 Key는 저장될 수 없어서 동일한 Key에 데이터를 삽입하면 수정이 발생합니다. 

=> 메소드 

=> Object 자료형은 형변환 해주어야한다. 

=> Object get(key)  : key에 해당하는 value리턴 없으면 null을 리턴 

=> void put(key, value) : key에 Value 저장

=> set keyset :  Map의 모든 key를 Set으로 리턴 



package log;


import java.io.BufferedReader;

import java.io.FileReader;

import java.util.HashMap;

import java.util.HashSet;

import java.util.Map;

import java.util.Set;


public class LoMain4 {


public static void main(String[] args) {


// log.txt file의 내용을 읽을 수 있는 객체를 생성

// log. txt 파일은 문자열로 구성된 파일이므로 읽기 위한 클래스는

// BufferedReader를 사용하는 것이 좋습니다.



    try (BufferedReader br = new BufferedReader(new FileReader("log\\log.txt"))) {

// try()안에 객체를 생성하면 close()를 하지 않아도 됩니다.


// 텍스트 파일의 내용을 전부 읽어서 출력하기

// BufferedReader 객체에는 readLine()이라는 메소드가 있는데

// 줄 단위로 데이터를 읽고 읽은 내용을 String으로 리턴합니다.

// 마지막 줄에 가서 더이상 데이터를 읽지 못하면 null 을 리턴

// Ip별 트래픽 합계

Map<String, Object> map = new HashMap<String, Object>();

   while (true) {


String b = br.readLine();

if (b == null) {

break;

}


// b중에 공백을 기준으로 맨 앞의 데이터만 출력

// 특정한 문자나 문자열을 기준으로 분할 해주는 메소드

// split(구분자) - String [] 로 리턴합니다.

String[] ar = b.split(" ");


// Ip를 가져와서 ip에 저장

Object temp = map.get(ar[0]);

// Ip의 key값이 있나 확인해보고 

    // 값은 key가없으면 ip와 traffice을 저장


if (temp == null) {

map.put(ar[0], Integer.parseInt(ar[9]));

}

// 이미 존재하는 IP라면 Traffice에 추가해서 저장

   

else {

// 중복되기 때문에 있는 값을 가져옴

// Object get(key)  : key에 해당하는 value리턴 없으면 null을 리턴


int value = (Integer) map.get(ar[0]);

// 맵은 중복되면 값을 대체 합니다. 

// 그렇기 때문에 이미 저장된 값을 value에 저장하고

// 트래픽이 있는 ar[9]번째를 정수로 바꾸어서 합해준다.

value = value + Integer.parseInt(ar[9]);

// 다시 입력.

map.put(ar[0], value);

}


}

//맵의 모든 데이터 출력 

Set<String>keys = map.keySet();

for(String key: keys) {

System.out.println(key + ": "+ map.get(key));

}


System.out.println("=======================================");


} catch (Exception e) {

System.out.println("예외" + e.getMessage());

e.printStackTrace();

}


}


}




+ Recent posts