반응형
📝List 정렬
public void sort(){
/** 초기 데이터 init **/
List<String> list = Arrays.asList("banana", "apple", "cherry");
/** 오름차순 정렬 **/
list.sort(Comparator.naturalOrder());
System.out.println("오름차순: " + list);
// 오름차순: [apple, banana, cherry]
/** 내림차순 정렬 **/
list.sort(Comparator.reverseOrder());
System.out.println("내림차순: " + list);
// 내림차순: [cherry, banana, apple]
}
📝Map정렬
public void sort() {
/** 초기 데이터 init **/
Map<String, Integer> map = new HashMap<>();
map.put("apple", 3);
map.put("banana", 1);
map.put("cherry", 2);
/** Map.Entry 리스트로 변환 **/
List<Map.Entry<String, Integer>> entryList = new ArrayList<>(map.entrySet());
/** 키(key) 기준으로 오름차순 정렬 **/
entryList.sort(Map.Entry.comparingByKey());
System.out.println("키 기준 오름차순: " + entryList);
// 키 기준 오름차순: [apple=3, banana=1, cherry=2]
/** 키(key) 기준으로 내림차순 정렬 **/
entryList.sort(Map.Entry.<String, Integer>comparingByKey().reversed());
System.out.println("키 기준 내림차순: " + entryList);
// 키 기준 내림차순: [cherry=2, banana=1, apple=3]
/** 값(value) 기준으로 오름차순 정렬 **/
entryList.sort(Map.Entry.comparingByValue());
System.out.println("값 기준 오름차순: " + entryList);
// 값 기준 오름차순: [banana=1, cherry=2, apple=3]
/** 값(value) 기준으로 내림차순 정렬 **/
entryList.sort(Map.Entry.<String, Integer>comparingByValue().reversed());
System.out.println("값 기준 내림차순: " + entryList);
// 값 기준 내림차순: [apple=3, cherry=2, banana=1]
}
Map은 직접 정렬할 수 없어서 Map.Entry로 변환한 후에 List로 담아서 사용이 가능합니다.
📝 JSONArray 정렬
public void sort() throws JSONException {
/** 초기 데이터 init **/
String jsonData = "["
+ "{\"name\":\"banana\",\"price\":1},"
+ "{\"name\":\"apple\",\"price\":3},"
+ "{\"name\":\"cherry\",\"price\":2}"
+ "]";
JSONArray jsonArray = new JSONArray(jsonData);
/** JSONArray -> List<JSONObject> **/
List<JSONObject> jsonList = new ArrayList<>();
for (int i = 0; i < jsonArray.length(); i++) {
jsonList.add(jsonArray.getJSONObject(i));
}
/** 오름차순 정렬 **/
jsonList.sort(Comparator.comparing(obj -> {
try {
return obj.getInt("price");
} catch (JSONException e) {
throw new RuntimeException(e);
}
}));
/** 정렬된 List -> JSONArray로 변환 **/
JSONArray sortedJsonArray = new JSONArray(jsonList);
System.out.println("오름차순 정렬 JSONArray: " + sortedJsonArray);
// 오름차순 정렬 JSONArray: [{"price":1,"name":"banana"},{"price":2,"name":"cherry"},{"price":3,"name":"apple"}]
/** 내림차순 정렬 **/
jsonList.sort(Comparator.comparing((JSONObject obj) -> {
try {
return obj.getInt("price");
} catch (JSONException e) {
throw new RuntimeException(e);
}
}).reversed());
/** 정렬된 List -> JSONArray로 변환 **/
JSONArray descSortedJsonArray = new JSONArray(jsonList);
System.out.println("내림차순 정렬 JSONArray: " + descSortedJsonArray);
// 내림차순 정렬 JSONArray: [{"price":3,"name":"apple"},{"price":2,"name":"cherry"},{"price":1,"name":"banana"}]
}
JSONArray도 바로 정렬할 수 없기 때문에 List에 담아서 처리해야합니다. 정렬할 때 정렬할 키를 기준으로 return해서 그 값을 정렬처리하게끔하면 됩니다.
반응형
'[Java] > [Java Code]' 카테고리의 다른 글
[Java Code] Referer 체크 (0) | 2022.05.22 |
---|---|
[Java Code] 이미지, 문서, 영상 보내기 (0) | 2022.04.30 |
[Java Code] 문자열을 숫자로 형변환 (0) | 2022.04.23 |
[Java Code] Json 화면에 뿌리기 (0) | 2022.03.01 |
[Java Code] 윈도우 서버에서 자바로 리눅스서버에 명령어 실행 및 명령어 결과 및 sftp 하기 (0) | 2022.03.01 |