Array, List, Map정렬 등

Array 정렬 (int[], String[], ...)

?
Arrays.sort([[Array]]);

Array 정렬 (Class 또는 특수 조건)

?
Value[] values = [[values 생성]];
Arrays.sort(values, new Comparator() {
    @Override
    public int compare(Value value0, Value value1) {
 
        return value0.getString().compareTo(value1.getString());
 
 
        // if (value0.getInt() < value1.getInt()) {
        //  return 1;
        // } else if (value0.getInt() > value1.getInt()) {
        //  return -1;
        // } else {
        //  return 0;
        // }
    }
});


List 정렬 (List, List, ...)

?
Collections.sort([[List]]);

List 정렬 (Class 또는 특수 조건)

?
List values = [[values 생성]];
Collections.sort(values, new Comparator() {
    @Override
    public int compare(Value value0, Value value1) {
 
        // return value0.getString().compareTo(value1.getString());
 
 
        // if (value0.getInt() < value1.getInt()) {
        //  return 1;
        // } else if (value0.getInt() > value1.getInt()) {
        //  return -1;
        // } else {
        //  return 0;
        // }
    }
});


Key와 Value List로 이루어진 Map 만들기

?
private Map> valuesPerKey;
...
 
public void load() {
 
    valuesPerKey = new HashMap<>();
    ...
 
    while ([[key와 value가 존재할 때]]) {
        [[key와 value 얻기]]
        List<[[Value]]> values = valuesPerKey.get(key);
        if (values == null) {
            values = new ArrayList<>();
            valuesPerKey.put(key, values);
        }
        values.add(value);
    }
     
    ...
}


Map을 Key 순서로 정렬한 List 만들기

?
Map map = ...;
List<[[KeyValuePairDTO]]> pairs = new ArrayList<>();
String[] keys = map.keySet().toArray(new String[0]);
Arrays.sort(keys);
for (String keyx: keys)
    pairs.add(new [[KeyValuePairDTO]](keyx, ([[Value]])map.get(keyx)));


KeyValuePair List의 Binary Search

(warning) Collections의 Binary Search를 사용하려면 KeyValuePair List는 반드시 먼저 정렬되어 있어야 함
?
// Collections의 Binary Search를 사용하려면 KeyValuePair List는 반드시 먼저 정렬되어 있어야 함
List<[[KeyValuePairDTO]]> values = ...;
 
int index = Collections.binarySearch(values, new [[KeyValuePairDTO]](code), new Comparator<[[KeyValuePairDTO]]>() {
    @Override
    public int compare([[KeyValuePairDTO]] v1, [[KeyValuePairDTO]] v2) {
        return v1.getKey().compareTo(v2.getKey());
    }
});
 
if (index >= 0) {
    [[KeyValuePairDTO]] value = values.get(index);
    ...
} else {
    ...
}

댓글

이 블로그의 인기 게시물

파일처리(한번에 모두읽기, 라인단위로 읽기, 쓰기, 리스트처리, 특정길이만큼 읽기)

AWS 가용성,확장성

math 함수 쓰기