본문 바로가기

JAVA/JSP

HashMap(Map) 정렬 - HashMap Sorting





java에서 sorting을 해야하는경우 유용하게 사용할듯 싶습니다.



import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;

/**
 * map 정렬 클래스
 *
 */
public class MapSortUtil  implements Comparator {

	Map base;
	public MapSortUtil(Map base) {
		this.base = base;
	}

	// Note: this comparator imposes orderings that are inconsistent with equals.   
	public int compare(String a, String b) {
		if (base.get(a) >= base.get(b)) {
			return -1;
		} else {
			return 1;
		} // returning 0 would merge keys
	}

	/**
	 * 정렬된 순서의 key를 반환합니다.
	 * @param sorted_map
	 * @return
	 */
	public ArrayList getSortKeyList(TreeMap sorted_map){

		if(sorted_map == null) return null;

		ArrayList keyList = new ArrayList();
		Iterator iter = sorted_map.keySet().iterator();
		String key;
		while(iter.hasNext())
		{
			key = (String) iter.next();
			keyList.add(key);
		}

		return keyList;
	}

	public static void main(String args[]){
		//정렬 기준맵
		HashMap sortMap = new HashMap();
		MapSortUtil msu = new MapSortUtil(sortMap);
		TreeMap sorted_map = new TreeMap(msu);



		sortMap.put("A", 0.9);
		sortMap.put("B", 1d);
		sortMap.put("C", 0.8);
		sortMap.put("D", 4d);

		sorted_map.putAll(sortMap);

		for(String key : msu.getSortKeyList(sorted_map))
		{
			System.out.println("key : " + key +" value : "+sortMap.get(key));
		}
	}
}


결과

key : D value : 4.0
key : B value : 1.0
key : A value : 0.9
key : C value : 0.8





'JAVA/JSP' 카테고리의 다른 글

쿠팡 SDK(API)를 활용하여 자동으로 품절처리 하기  (2) 2020.12.10