[英]Sorting a linked hashset
有沒有一種方法可以對鏈接哈希集中的鏈接進行排序? 我知道它保留了添加元素的順序,但是有沒有辦法像鏈接列表一樣重新排序這些鏈接,並且它仍然表現出 hashMap 行為?
不幸的是,沒有,因為sort()
來自List
接口,它不是由LinkedHashSet
實現的。 它實現了 Set -> Collection 接口。
但是,有一個解決方法,您可以將數據放入 ArrayList 或 LinkedList,在那里對其進行排序,然后將它們放入LinkedHashSet
但現在將排序。 例子:
ArraysList<> list = ..<put_your_data_here>..
list.sort(...); // with comparator
Set<> set = new LinkedHashSet(list);
結果,您將擁有完全排序的LinkedHashSet
。
您可以通過幾種方式實現它。分享一些您可以使用的
方式 1:將 LinkedHashSet 轉換為 TreeSet 以實現自然排序
腳步:
package in.cj.resources.collection;
import java.util.LinkedHashSet;
import java.util.TreeSet;
public class SortingLinkedHashSetUsingTreeSet {
public static void main(String[] args) {
// creating LinkedHashSet object of type String
LinkedHashSet<String> lhsCompanies =
new LinkedHashSet<String>();
// adding elements to LinkedHashSet object
lhsCompanies.add("Dutchview");
lhsCompanies.add("Oracle");
lhsCompanies.add("Microsoft");
// Iterating using enhanced for-loop
System.out.println("Insertion Order:"
+ " Iterating LinkedHashSet\n");
for(String company : lhsCompanies) {
System.out.println(company);
}
// convert LinkedHashSet to TreeSet
TreeSet<String> tSet = new TreeSet<String>(lhsCompanies);
// Iterating using enhanced for-loop
System.out.println("\n\nAscending sorting-order:"
+ " Iterating TreeSet\n");
for(String company : tSet) {
System.out.println(company);
}
}
}
方式2:將LinkedHashSet轉換為TreeSet進行逆序
腳步:
package in.cj.resources.collection;
import java.util.Comparator;
import java.util.LinkedHashSet;
import java.util.TreeSet;
public class ReverseSortingLinkedHashSetUsingTreeSet {
public static void main(String[] args) {
// creating LinkedHashSet object of type String
LinkedHashSet<String> lhsCompanies =
new LinkedHashSet<String>();
// adding elements to LinkedHashSet object
lhsCompanies.add("Dutchview");
lhsCompanies.add("Amazon");
lhsCompanies.add("Google");
// Iterating using enhanced for-loop
System.out.println("Insertion Order:"
+ " Iterating LinkedHashSet\n");
for(String company : lhsCompanies) {
System.out.println(company);
}
// create new TreeSet object and provide reverse-sorting logic
TreeSet<String> tSet = new TreeSet<String>(
new Comparator<String>() {
@Override
public int compare(String str1, String str2) {
return str2.compareTo(str1);
}
});
// add LinkedHashSet to TreeSet for reverse-sorting elements
tSet.addAll(lhsCompanies);
// Iterating using enhanced for-loop
System.out.println("\n\nDescending sorting-order:"
+ " Iterating TreeSet\n");
for(String company : tSet) {
System.out.println(company);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.