Notice
Recent Posts
Recent Comments
Link
투케이2K
326. (java/자바) [유틸 파일] listMapKeySort : List Map 형식 데이터 특정 key 값 기준 정렬 수행 본문
Java
326. (java/자바) [유틸 파일] listMapKeySort : List Map 형식 데이터 특정 key 값 기준 정렬 수행
투케이2K 2023. 4. 27. 21:44[개발 환경 설정]
개발 툴 : AndroidStudio
개발 언어 : Java
[소스 코드]
// -----------------------------------------------------------------------------------------
// TODO [SEARCH FAST] : [RETURN] listMapKeySort : List Map 형식 데이터 특정 key 값 기준 정렬 수행
// -----------------------------------------------------------------------------------------
public static List<Map<String, Object>> listMapKeySort (List<Map<String, Object>> listMap, String key) {
/**
* // -----------------------------------------
* [listMapKeySort 메소드 설명]
* // -----------------------------------------
* 1. List Map 형식 데이터 특정 key 값 기준 정렬 수행
* // -----------------------------------------
* 2. 호출 방식 :
*
* // [초기 배열 선언 실시]
* List<Map<String, Object>> listMap = new ArrayList<>();
*
*
* // [Map 데이터 생성 실시]
* Map<String, Object> map_1 = new HashMap<>();
* map_1.put("key_1", "value_1");
* map_1.put("step", 1);
*
* Map<String, Object> map_3 = new HashMap<>();
* map_3.put("key_3", "value_3");
* map_3.put("step", 3);
*
* Map<String, Object> map_2 = new HashMap<>();
* map_2.put("key_2", "value_2");
* map_2.put("step", 2);
*
*
* // [배열에 데이터 삽입]
* listMap.add(map_1);
* listMap.add(map_3);
* listMap.add(map_2);
*
*
* // [유틸 파일 호출]
* C_Util.listMapKeySort(listMap, "step");
*
* // -----------------------------------------
* 3. 리턴 데이터 : 특정 key 값 기준으로 정렬된 데이터
*
* [{key_1=value_1, step=1}, {key_2=value_2, step=2}, {key_3=value_3, step=3}]
* // -----------------------------------------
* */
// [리턴 데이터 선언 실시]
List<Map<String, Object>> returnData = new ArrayList<>();
// [로직 처리 수행 실시]
try {
// [사전 인풋 데이터 널 체크 실시]
if (listMap != null && listMap.size() > 0
&& listMap.toString().contains(key) == true){ // [널이 아니고, key 값을 포함하는 경우]
// [1]. [인풋 값 삽입 실시]
returnData = listMap;
// [2]. [Collections 을 사용해서 List 배열 데이터 정렬 실시]
Collections.sort( returnData , new Comparator<Map>() {
@Override
public int compare(Map a, Map b) {
// TODO [value 변수 선언]
String value_A = "";
String value_B = "";
try {
// TODO [value 기준 정렬]
value_A = String.valueOf(a.get(key)); // [정렬하려는 key 지정]
value_B = String.valueOf(b.get(key)); // [정렬하려는 key 지정]
}
catch (Exception e) {
e.printStackTrace();
}
// TODO [value 기준 정렬]
if (C_Util.stringIsNumber(value_A) == true && C_Util.stringIsNumber(value_B) == true){
return Integer.compare(Integer.parseInt(value_A), Integer.parseInt(value_B)); // [integer]
}
else {
return value_A.compareTo(value_B); // [string]
}
}
});
}
}
catch (Exception e){
e.printStackTrace();
}
// [로그 출력]
// ===============================================================
S_Log._D_("listMapKeySort :: List Map 형식 데이터 특정 key 값 기준 정렬 수행", new String[]{
"INPUT [LIST] :: " + String.valueOf(listMap),
"INPUT [KEY] :: " + String.valueOf(key),
"RETURN :: " + String.valueOf(returnData)
});
// ===============================================================
// [리턴 데이터 반환 실시]
return returnData;
}
반응형
'Java' 카테고리의 다른 글
Comments