Java中的TreeSet pollLast()方法示例
Java中的TreeSet类是一种基于红黑树的Set实现,它可以自动按照元素的自然顺序(例如字符串按照字典序,数字按照大小)排序,也可以通过Comparator接口自定义排序方式。TreeSet类中有一个pollLast()方法,它的作用是删除并返回最后一个(最大的)元素,本篇文章将给出pollLast()方法的示例代码。
TreeSet pollLast()方法的基本使用
TreeSet类是基于Set接口的,因此它只能存储非重复元素,而且它的元素是自动排序的。下面是一个TreeSet实例的示例代码:
import java.util.*;
public class TreeSetDemo {
public static void main(String[] args) {
TreeSet<Integer> set = new TreeSet<>();
set.add(3);
set.add(1);
set.add(5);
set.add(2);
set.add(4);
System.out.println("TreeSet: " + set);
// 使用pollLast()方法获取最后一个元素
int last = set.pollLast();
System.out.println("Last element removed: " + last);
System.out.println("Updated TreeSet: " + set);
}
}
执行上述代码,输出结果如下:
TreeSet: [1, 2, 3, 4, 5]
Last element removed: 5
Updated TreeSet: [1, 2, 3, 4]
在上述代码中,我们首先创建了一个TreeSet实例,并向其中添加5个整数。然后,使用pollLast()方法获取最后一个元素,并将它从set中删除,最后输出更新后的set。可以看到,最后一个元素5被成功删除,并且set按照自然顺序重新排序了。
需要注意的是,如果TreeSet为空,调用pollLast()方法将返回null,不会报错。
TreeSet pollLast()方法的高级用法
pollLast()方法还有一些高级用法,比如使用自定义的比较器对元素进行排序。
假设现在我们要将一组字符串按照长度排序,那么可以自定义一个比较器,并指定给TreeSet:
import java.util.*;
public class TreeSetDemo2 {
public static void main(String[] args) {
// 自定义比较器,按照字符串长度排序
Comparator<String> lengthComparator = new Comparator<String>() {
public int compare(String s1, String s2) {
return s1.length() - s2.length();
}
};
TreeSet<String> set = new TreeSet<>(lengthComparator);
set.add("cat");
set.add("dog");
set.add("elephant");
set.add("bird");
set.add("apple");
System.out.println("TreeSet(sorted by length): " + set);
// 获取最长的字符串
String longest = set.pollLast();
System.out.println("Longest string removed: " + longest);
System.out.println("Updated TreeSet: " + set);
}
}
执行上述代码,输出结果如下:
TreeSet(sorted by length): [cat, dog, bird, apple, elephant]
Longest string removed: elephant
Updated TreeSet: [cat, dog, bird, apple]
在上述代码中,我们首先定义了一个比较器lengthComparator,该比较器将字符串按照它们的长度进行排序。然后,我们创建了一个TreeSet实例,并将lengthComparator指定为它的比较器。接着,向set中添加5个字符串,并使用pollLast()方法获取最长的字符串,并将它从set中删除。
需要注意的是,如果自定义的比较器中存在比较不一致的情况,比如对于两个元素a和b,既有a.compareTo(b) < 0,又有b.compareTo(a) < 0,那么将会抛出java.lang.IllegalArgumentException异常。
结论
本篇文章介绍了Java中TreeSet类的pollLast()方法,该方法可以删除并返回最后一个元素。除了基本用法外,还介绍了如何使用自定义的比较器来对元素进行排序。希望这篇文章能对大家理解TreeSet类的使用和pollLast()方法有所帮助。