반응형
알고리즘 문제를 풀면서, 현업에서 쉽게 중복을 제거하고 정렬하는 방법을 고민한적이 있습니다.
문제 : 아스키 코드화 하여 문자열 정렬
String[] str =
{ "but", "i", "wont", "hesitate", "no", "more", "no", "more", "it", "cannot", "wait", "im",
"yours" };
HashMap<Integer, String> map = new HashMap<Integer, String>();
int temp = 0;
for (int i = 0; i < str.length; i++) {
temp = 0;
for (int j = 0; j < str[i].length(); j++) {
temp += str[i].charAt(j) - 48;
}
map.put(temp, str[i]);
}
문자를 아스키 코드로 변환하여 해쉬맵에 저장합니다.
저장 된 데이터
1. HashMap에서 정렬 하기
Iterator iter = mapSort(map).iterator();
public static List<String> mapSort(final HashMap<String, Integer> map) {
List<String> list = new ArrayList<String>();
list.addAll(map.keySet());
Collections.sort(list, new Comparator<Object>() {
@Override
public int compare(Object o1, Object o2) {
Object ob1 = map.get(o1);
Object ob2 = map.get(o2);
return ((Comparable) ob2).compareTo(ob1);
}
});
Collections.reverse(list);
return list;
}
list.addAll에 해쉬맵을 저장하고 Collections.sort로 정렬합니다.
2. TreeMap에서 정렬 하기
TreeMap<Integer, String> treeMap = new TreeMap<>(map);
Iterator iter = treeMap.keySet().iterator(); // 오름차순
// Iterator iter = treeMap.descendingKeySet().iterator(); // 내림차순
while (iter.hasNext()) {
Integer key = (Integer) iter.next();
bw.write(String.valueOf(treeMap.get(key)));
bw.newLine();
}
bw.close();
TreeMap은 정렬하여 map에 저장합니다.
출력 방법은 키로 값을 호출하는 방식입니다.
반응형
'개발(합니다) > Java&Spring' 카테고리의 다른 글
Spring Security 정리 (4) : 로그인 실패 후 처리 (2) | 2019.01.20 |
---|---|
Spring에서 메세지 처리하기 (0) | 2019.01.18 |
Spring Security 정리(3) : https (0) | 2019.01.17 |
Spring Security 정리(2) : DB 연결 (0) | 2019.01.17 |
Spring Security 정리(1) : 로그인 화면 (2) | 2019.01.17 |