목록의 경우 Collections.sort(List)
방법 을 사용합니다 . 정렬하려면 어떻게해야 HashSet
합니까?
답변
HashSet은 요소의 순서를 보장하지 않습니다. 이 보장이 필요하면 TreeSet을 사용하여 요소를 보유하는 것이 좋습니다.
그러나이 항목에 대해 정렬 된 요소가 필요한 경우 일시적으로 목록을 만들고 정렬합니다.
Set<?> yourHashSet = new HashSet<>();
...
List<?> sortedList = new ArrayList<>(yourHashSet);
Collections.sort(sortedList);
답변
모든 개체를에 추가 TreeSet
하면 정렬 된 세트가 생성됩니다. 아래는 원시 예입니다.
HashSet myHashSet = new HashSet();
myHashSet.add(1);
myHashSet.add(23);
myHashSet.add(45);
myHashSet.add(12);
TreeSet myTreeSet = new TreeSet();
myTreeSet.addAll(myHashSet);
System.out.println(myTreeSet); // Prints [1, 12, 23, 45]
답변
대신 TreeSet을 사용할 수 있습니다 .
답변
정렬하는 Java 8 방법은 다음과 같습니다.
fooHashSet.stream()
.sorted(Comparator.comparing(Foo::getSize)) //comparator - how you want to sort it
.collect(Collectors.toList()); //collector - what you want to collect it to
*Foo::getSize
YourItem의 HashSet을 크기별로 자연스럽게 정렬하는 방법의 예입니다.
* Collectors.toList()
정렬 결과를 목록으로 수집하여 캡처해야합니다.List<Foo> sortedListOfFoo =
답변
java.util.TreeSet
실제 개체로 사용하십시오 . 이 컬렉션을 반복하면 값이 잘 정의 된 순서로 돌아옵니다.
사용하는 경우 java.util.HashSet
순서는 거의 확실하게 사전식이 아닌 내부 해시 함수에 따라 다릅니다 (콘텐츠 기반).
답변
Java 8 수집기와 TreeSet을 사용할 수 있습니다.
list.stream().collect(Collectors.toCollection(TreeSet::new))
답변
다른 답변에서 언급했듯이 TreeSet을 사용할 수 있습니다.
사용 방법에 대한 자세한 설명은 다음과 같습니다.
TreeSet<String> ts = new TreeSet<String>();
ts.add("b1");
ts.add("b3");
ts.add("b2");
ts.add("a1");
ts.add("a2");
System.out.println(ts);
for (String s: ts)
System.out.println(s);
산출:
[a1, a2, a3, a4, a5]
a1
a2
b1
b2
b3