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

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

Java中的 ConcurrentSkipListSet subSet() 方法

ConcurrentSkipListSet 是 Java 中线程安全的有序集合。由于它的线程安全性和高效率,被广泛用于多线程环境中。而 subSet() 方法则是它的子集方法之一。

方法介绍

subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive)

其中,fromElement 是子集的起点元素(包含/排除),toElement 是子集的终点元素(包含/排除)。如果 fromInclusive 为 true,则包含起点元素;如果 toInclusive 为 true,则包含终点元素。

示例代码
import java.util.concurrent.ConcurrentSkipListSet;
public class ConcurrentSkipListSetTest {
    public static void main(String[] args) {
        ConcurrentSkipListSet<Integer> set = new ConcurrentSkipListSet<Integer>();
        for (int i = 0; i < 10; i++) {
            set.add(i);
        }
        // 打印完整集合
        System.out.println("set: " + set);
        // 获取子集,从3(包括3)开始到7(排除7)
        ConcurrentSkipListSet<Integer> subSet1 = (ConcurrentSkipListSet<Integer>) set.subSet(3, true, 7, false);
        System.out.println("subSet1: " + subSet1);
        // 获取子集,从3(排除3)开始到7(排除7)
        ConcurrentSkipListSet<Integer> subSet2 = (ConcurrentSkipListSet<Integer>) set.subSet(3, false, 7, false);
        System.out.println("subSet2: " + subSet2);
        // 获取子集,从3(包括3)开始到7(包括7)
        ConcurrentSkipListSet<Integer> subSet3 = (ConcurrentSkipListSet<Integer>) set.subSet(3, true, 7, true);
        System.out.println("subSet3: " + subSet3);
        // 获取子集,从3(排除3)开始到7(包括7)
        ConcurrentSkipListSet<Integer> subSet4 = (ConcurrentSkipListSet<Integer>) set.subSet(3, false, 7, true);
        System.out.println("subSet4: " + subSet4);
    }
}

输出结果为:

set: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
subSet1: [3, 4, 5, 6]
subSet2: [4, 5, 6]
subSet3: [3, 4, 5, 6, 7]
subSet4: [4, 5, 6, 7]
注意事项

subSet() 方法是基于元素的自然顺序,而不是基于比较器的顺序。如果需要基于比较器获得子集,可以使用 subSet(R fromElement, R toElement) 方法。另外,需要注意赋值操作将返回一个视图,并不会将原集合中元素删除或清空。