📌  相关文章
📜  如何在Java中按降序对 LinkedHashSet 元素进行排序?

📅  最后修改于: 2022-05-13 01:54:20.783000             🧑  作者: Mango

如何在Java中按降序对 LinkedHashSet 元素进行排序?

LinkedHashSet 是 HashSet 的有序版本,它在所有元素之间维护一个双向链表。当需要维护迭代顺序时,使用这个类。当遍历 HashSet 时,顺序是不可预测的,而 LinkedHashSet 迭代是按照元素插入的顺序遍历元素。当使用迭代器循环遍历 LinkedHashSet 时,元素将返回到它们插入的顺序。

HashSet 中的元素确实保持顺序,而 TreeSet 以Java中的可比较或比较器方法定义的排序顺序维护对象。默认情况下,TreeSet 元素按升序排序。所以现在出现的问题是按降序排列给定的 HashSet。所以这里有必要借助一个TreeSet来按降序存储元素。

插图:

Input : LinkedHashSet = [4, 3, 6, 5, 8]
Output: LinkedHashSet = [8, 6, 5, 4, 3]

Input: LinkedHashSet = [22, 44, 33, 66, 55]
Output: LinkedHashSet = [66, 55, 44, 33, 22]

算法

  1. 创建 HashSet 以获取输入并存储来自用户的所有元素。
  2. 现在,通过以相反的顺序添加 HashSet 上方的所有元素,创建以降序存储元素的 TreeSet。
Pseude Code: TreeSet ts = new TreeSet<>(Collections.reverseOrder());
             ts.addAll(lh);

例子:

Java
// Java Program to sort LinkedHashSet elements
// in descending order
 
// Importing java generic libraries
import java.util.*;
import java.io.*;
 
// Class
public class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
        // Creating and Initializing LinkedHashSet
        Set linkhasset
            = new LinkedHashSet();
 
        // Adding elements to above LinkedHashSet
        // Custom inputs
        linkhasset.add(26);
        linkhasset.add(23);
        linkhasset.add(24);
        linkhasset.add(21);
        linkhasset.add(25);
        linkhasset.add(22);
 
        // TreeSet storing elements in descending order by
        // adding all elements of HashSet in reverse order
        TreeSet ts
            = new TreeSet<>(Collections.reverseOrder());
 
        // Add all elements from LinkedHashSet to TreeSet
        ts.addAll(linkhasset);
 
        // Print all elements of TreeSet
        System.out.println("Element in descending order : "
                           + ts);
    }
}


输出
Element in descending order : [26, 25, 24, 23, 22, 21]