📅  最后修改于: 2023-12-03 15:16:22.180000             🧑  作者: Mango
Java中的ConcurrentSkipListSet是线程安全的有序集合,它的底层是基于跳表实现的。其中,descendingSet()
方法是用于获取当前集合的一个逆序视图,即返回一个按照相反排序的ConcurrentSkipListSet对象。
public NavigableSet<E> descendingSet()
该方法返回的NavigableSet对象,它是当前ConcurrentSkipListSet集合的一个逆序视图。返回的NavigableSet集合和原始集合共享元素,因此对逆序视图集合的修改,也会影响原始集合。
我们下面通过一个示例来演示如何使用descendingSet()
方法:
import java.util.Iterator;
import java.util.NavigableSet;
import java.util.concurrent.ConcurrentSkipListSet;
public class Test {
public static void main(String[] args) {
ConcurrentSkipListSet<Integer> set = new ConcurrentSkipListSet<>();
for (int i = 1; i <= 10; i++) {
set.add(i);
}
System.out.println("原始集合:"+set);
// 获取逆序视图
NavigableSet<Integer> descendingSet = set.descendingSet();
System.out.println("逆序集合:"+descendingSet);
// 删除逆序集合中的元素
Iterator<Integer> it = descendingSet.iterator();
while (it.hasNext()) {
Integer n = it.next();
if (n % 2 == 0) {
it.remove();
}
}
System.out.println("修改后的原始集合:"+set);
System.out.println("修改后的逆序集合:"+descendingSet);
}
}
运行结果如下:
原始集合:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
逆序集合:[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
修改后的原始集合:[1, 3, 5, 7, 9]
修改后的逆序集合:[9, 7, 5, 3, 1]
从运行结果可以看出,通过descendingSet()
方法可以获取ConcurrentSkipListSet的逆序视图,修改逆序视图集合中的元素也会影响原始集合。