문자열 값 묶기

Web Development assistant·2022년 7월 10일
0

# java

목록 보기
12/17
package single;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class AddrTest {
	public static void main(String[] args) {
    
		String addrStr = "제주특별시 제주시,인천광역시 부평구,서울특별시 서대문구,서울특별시 강남구,인천광역시 남동구,제주특별시 서귀포시,전라북도 전주시,전라북도 군산시,인천광역시 중구,서울특별시 성북구,세종특별시 세종특별시,부산광역시 해운대구";
        
		String[]addrArr = addrStr.split(",");
		Map<String, String> addrMap = null;
		List<Map<String, String>> addrList = new ArrayList<>();
		Arrays.sort(addrArr);
		String str = "";
		
		for(int i = 0; i< addrArr.length - 1 ; i++) {
			int blank = 0;
			int blank2 = 0;
			blank = addrArr[i].indexOf(" ");
			blank2 = addrArr[i+1].indexOf(" ");
			String nowAddr01 = addrArr[i].substring(0, blank);
			String nowAddr02 = addrArr[i].substring(blank + 1, addrArr[i].length());
			
			int idx = 0;
			//맵 인덱스 찾기
			for(int j= 0 ; j< addrList.size(); j++) {
				Map<String, String>tmpMap = addrList.get(j);
				if(tmpMap.containsKey(nowAddr01)) {
					idx = j;
				}
			}
			if(idx == 0 ) {
				addrMap = new HashMap<>();
				str = nowAddr02;
				addrMap.put(nowAddr01, str);
				addrList.add(addrMap);
			}else {
				addrMap = addrList.get(idx);
				str = addrMap.get(nowAddr01);
				str += ", " + nowAddr02;
				addrMap.put(nowAddr01, str);
			}
		}
		
		// last 
		int length = addrArr.length;
		int blank = addrArr[length -1].indexOf(" ");
		String result = "";
		
		String lastAddr01 = addrArr[length - 1].substring(0, blank);
		String lastAddr02 = addrArr[length - 1].substring(blank + 1, addrArr[length - 1].length());

		int idx = 0;
		
		//맵 인덱스 찾기
		for(int j= 0 ; j< addrList.size(); j++) {
			Map<String, String>tmpMap = addrList.get(j);
			if(tmpMap.containsKey(lastAddr01)) {
				idx = j;
			}
		}
		if(idx == 0 ) {
			addrMap = new HashMap<>();
			str = lastAddr02;
			addrMap.put(lastAddr01, str);
			addrList.add(addrMap);
		}else {
			addrMap = addrList.get(idx);
			str = addrMap.get(lastAddr01);
			str += ", " + lastAddr02;
			addrMap.put(lastAddr01, str);
		}
		
		System.out.println(addrList);
		for(int i = 0 ; i< addrList.size(); i++) {
			Map<String, String> tmpMap = addrList.get(i);
			for (String key : tmpMap.keySet()) {
				result += key + ">" + tmpMap.get(key) + " ";
			}
		}
		System.out.println();
		System.out.println();
		System.out.println(result);
	}
}

결과

[{부산광역시=해운대구}, {서울특별시=강남구, 서대문구, 성북구}, {세종특별시=세종특별시}, {인천광역시=남동구, 부평구, 중구}, {전라북도=군산시, 전주시}, {제주특별시=서귀포시, 제주시}]

부산광역시>해운대구 서울특별시>강남구, 서대문구, 성북구 세종특별시>세종특별시 인천광역시>남동구, 부평구, 중구 전라북도>군산시, 전주시 제주특별시>서귀포시, 제주시

0개의 댓글