📜  Java中TreeSet上使用排序逻辑从集合中获取最高值和最低值元素

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

Java中TreeSet上使用排序逻辑从集合中获取最高值和最低值元素

Java中的TreeSet实现了Set接口,使用红黑树来存储值。我们使用 TreeSet 进行排序,因为 TreeSet 中的元素默认按升序存储。创建 TreeSet 后,我们可以从 TreeSet 的最后一个元素中获取最高元素值,从 TreeSet 的第一个元素中获取第一个元素值。我们必须首先将 Comparator 对象与 TreeSet 声明一起传递。现在,我们可以简单地通过创建一个 TreeSet 并添加元素然后按某个属性对元素进行排序来完成此操作,最后通过 TreeSet 上的 last() 函数获得最高的元素并通过 first() 函数获得最低的元素。我们将不得不重写比较方法来实现排序。 TreeSet 声明将遵循下面给出的语法:

句法

TreeSet name = new TreeSet(new ComparatorClass());

参数

  • name:创建的 TreeSet 的名称
  • 比较器:比较器对象
  • ComparatorClass():用于实现排序函数的类(比较方法)

返回: TreeSet,我们可以在其中添加值

例如,我们想创建一个具有组名和年龄的 TreeSet,我们想找到年龄和价值最高的人和年龄和价值最低的人

示例 1:

Input :
Name - "Ramesh" Age - 20
Name - "Suresh" Age - 48
Name - "Ankit" Age - 14
Name - "Madhav" Age - 78

Output :
Highest Age Person: Name : Madhav-- Age : 78
Lowest Age Person: Name : Ankit-- Age : 14

示例 2:

Input :
Name - "Ramesh" Age - 20
Name - "Suresh" Age - 20
Name - "Ankit" Age - 78
Name - "Madhav" Age - 78

Output :
Highest Age Person: Name : Ankit-- Age : 78
Lowest Age Person: Name : Suresh-- Age : 14

解释

例如,所有年龄都是不同的,因此根据年龄值找到最高和最低。

例如,2 个最高年龄值相同,因此树集的 last() 中的人名被赋予最高值,即 'A' < 'M' 所以 Ankit 具有最高年龄,而如果最低年龄值最初是相同的名字( ) 的树集被赋予最低值,即 'S' > 'R' 所以 Suresh 的年龄最低。

例子:

Java
// Getting Highest and Lowest Value 
// Element From a Set by Using Sorting 
// Logic on TreeSet in Java
  
import java.util.*;
import java.io.*;
import java.util.Comparator;
import java.util.TreeSet;
  
// Implement sorting class using comparator to sort
class sorting implements Comparator {
    
    // Override the Compare Method
    @Override
    public int compare(ages age1, ages age2) {
        if (age1.value() > age2.value()) {
            return 1;
        } else {
            return -1;
        }
    }
}
  
// Implement ages for getting name and age
class ages {
    private String name;
    private int age;
  
    public ages(String name, int a) {
        this.name = name;
        this.age = a;
    }
  
    public String Name() {
        return name;
    }
  
    public void NewName(String name) {
        this.name = name;
    }
  
    public int value() {
        return age;
    }
  
    public void NewAge(int age) {
        this.age = age;
    }
  
    // Convert to string output
    public String toString() {
        return "Name: " + this.name + "-- age: " + this.age;
    }
}
  
public class GFG {
    public static void main(String[] args) {
        // Create a TreeSet with Comporator Object
        TreeSet agetree = new TreeSet(new sorting());
        
        // Add elements in TreeSet
        agetree.add(new ages("Ramesh", 20));
        agetree.add(new ages("Suresh", 20));
        agetree.add(new ages("Ankit", 78));
        agetree.add(new ages("Madhav", 78));
        
        // Output Highest Value Element
        System.out.println("Highest Age Person: " + agetree.last());
        
        // Output Lowest Value Element
        System.out.println("Lowest Age Person: " + agetree.first());
    }
}


输出
Highest Age Person: Name: Ankit-- age: 78
Lowest Age Person: Name: Suresh-- age: 20