Java에서 TreeSet
은 요소를 오름차순으로 자동 정렬하므로 순서가 보장됩니다.TreeSet을 사용하여 Comparator를 제공하지 않고 정렬합니다.
예를 들어 배열이 무작위로 Date
인 경우이를 TreeSet
에 복사하면 정렬 방식으로 TreeSet
에 추가됩니다.
단순한 Date
개체 대신, 다음 형식으로 ArrayList
이 HashMap<String,Object>
인 것으로 가정합니다.
의 ArrayList에서 첫 번째 값,
{mydate = 32156464 , mystring = "abc", mystring2 = "xyz"}
해시 맵의 ArrayList를에서
2 값, 내가 정렬 할 경우 지금
{mydate = 64687678 , mystring = "abdc", mystring2 = "xyzzz"}
해시 맵의 ArrayList를에서
3 값,
{mydate = 11233678 , mystring = "abxdc", mystring2 = "xyzppzz"}
키를 기반으로 hashmap 의이 arraylist, 난에서 새로운 비교기를 만들 수있어 그것은 잘 정렬 된 순서에 TreeSet
내부 ArrayList에 저장됩니다
public static Set<HashMap<String, Object>> mySet = new TreeSet<>(new Comparator<HashMap<String, Object>>() {
@Override
public int compare(HashMap<String, Object> o1, HashMap<String, Object> o2) {
return ((Date) o2.get(mydate)).compareTo((mydate) o1.get(DATE));
}
});
이 같은 53,523,인스턴스. 하지만 이것을 달성하기 위해 맞춤 Comparator
을 사용했습니다. 데이터 정렬을 위해이 상황에서 TreeSet
을 사용하는 요령은 사용자 정의 Comparator
을 제공하는 경우 무엇입니까?
어떻게 정렬 할 수 있습니다이 TreeSet
에 Comparator
의 새로운 인스턴스를 사용하지 않고 date
값을 기준으로 HashMap
의 ArrayList
?
정렬 된 컨테이너의 요점은 항목을 특정 순서로 유지하는 것입니다. Comparator는 순서를 결정하는 항목을 지정하는 수단입니다. – khelwood