📌  相关文章
📜  Java中的 ConcurrentSkipListSet descendingSet() 方法(1)

📅  最后修改于: 2023-12-03 15:16:22.180000             🧑  作者: Mango

Java中的 ConcurrentSkipListSet descendingSet() 方法

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的逆序视图,修改逆序视图集合中的元素也会影响原始集合。