ถ้าคุณต้องการให้จุดสิ้นสุดCollection
อยู่ในรูปแบบของSet
และถ้าคุณต้องการกำหนดของคุณเองnatural order
แทนที่จะเป็นแบบTreeSet
นั้น -
1. แปลงHashSet
เป็นList
2. กำหนดเองเรียงลำดับList
โดยใช้Comparator
3. แปลงกลับList
เข้าไปLinkedHashSet
เพื่อรักษาลำดับ
4. แสดงLinkedHashSet
โปรแกรมตัวอย่าง -
package demo31;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
public class App26 {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
addElements(set);
List<String> list = new LinkedList<>();
list = convertToList(set);
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
int flag = s2.length() - s1.length();
if(flag != 0) {
return flag;
} else {
return -s1.compareTo(s2);
}
}
});
Set<String> set2 = new LinkedHashSet<>();
set2 = convertToSet(list);
displayElements(set2);
}
public static void addElements(Set<String> set) {
set.add("Hippopotamus");
set.add("Rhinocerous");
set.add("Zebra");
set.add("Tiger");
set.add("Giraffe");
set.add("Cheetah");
set.add("Wolf");
set.add("Fox");
set.add("Dog");
set.add("Cat");
}
public static List<String> convertToList(Set<String> set) {
List<String> list = new LinkedList<>();
for(String element: set) {
list.add(element);
}
return list;
}
public static Set<String> convertToSet(List<String> list) {
Set<String> set = new LinkedHashSet<>();
for(String element: list) {
set.add(element);
}
return set;
}
public static void displayElements(Set<String> set) {
System.out.println(set);
}
}
เอาต์พุต -
[Hippopotamus, Rhinocerous, Giraffe, Cheetah, Zebra, Tiger, Wolf, Fox, Dog, Cat]
นี่คอลเลกชันที่ได้รับการจัดเรียงเป็น -
ครั้งแรก - เรียงลำดับลงของString
ความยาว
สอง - เรียงลำดับลงของString
ลำดับชั้นตามลำดับตัวอักษร
HashSet
คือคอลเล็กชันที่ไม่มีการเรียงลำดับ