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