📜  Java Collections unmodifiableNavigableSet​() 方法及实例(1)

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

Java Collections unmodifiableNavigableSet() 方法及实例介绍

在 Java 集合框架中,NavigableSet 接口继承自 SortedSet 接口,并且在其基础上提供了一些额外的导航方法 (Navigation methods),例如 ceiling()floor()higher()lower() 等。unmodifiableNavigableSet() 方法是 Collections 类中的一个静态方法,用于创建一个不可修改的 NavigableSet,下面详细介绍该方法及实例。

语法
public static <T> NavigableSet<T> unmodifiableNavigableSet(NavigableSet<? extends T> s)
参数
  • s: 要创建不可修改 NavigableSet 的原始集合。
返回值

返回一个不可修改的 NavigableSet,该集合的元素是传递进来原始集合的子集。

示例
import java.util.Collections;
import java.util.NavigableSet;
import java.util.TreeSet;

public class UnmodifiableNavigableSetExample {

    public static void main(String[] args) {
        NavigableSet<String> originalSet = new TreeSet<>();
        originalSet.add("Alice");
        originalSet.add("Bob");
        originalSet.add("Charlie");
        originalSet.add("David");
        originalSet.add("Eva");
        System.out.println("Original set: " + originalSet);

        // Create an unmodifiableNavigableSet from the original set
        NavigableSet<String> unmodifiableSet = Collections.unmodifiableNavigableSet(originalSet);
        System.out.println("Unmodifiable set: " + unmodifiableSet);

        // Try to add an element to the unmodifiable set, it will throw an exception
        try {
            unmodifiableSet.add("Frank");
        } catch (UnsupportedOperationException ex) {
            System.out.println("Caught an unsupported operation exception: " + ex.getMessage());
        }

        // Try to remove an element from the unmodifiable set, it will also throw an exception
        try {
            unmodifiableSet.remove("Alice");
        } catch (UnsupportedOperationException ex) {
            System.out.println("Caught an unsupported operation exception: " + ex.getMessage());
        }

        // The original set is still mutable
        originalSet.add("Frank");
        System.out.println("Original set after adding \"Frank\": " + originalSet);
        System.out.println("Unmodifiable set after adding \"Frank\": " + unmodifiableSet);
    }
}

在上面的示例代码中,我们首先创建了一个 NavigableSet 实例 originalSet,并将一些元素添加到其中。接着,我们使用 Collections.unmodifiableNavigableSet() 方法来创建一个不可修改的 NavigableSet unmodifiableSet。然后,我们尝试向 unmodifiableSet 中添加元素和从 unmodifiableSet 中删除元素,这两个操作都将抛出 UnsupportedOperationException。最后,我们向 originalSet 中添加新元素,并输出 originalSetunmodifiableSet 中的所有元素。

输出结果
Original set: [Alice, Bob, Charlie, David, Eva]
Unmodifiable set: [Alice, Bob, Charlie, David, Eva]
Caught an unsupported operation exception: null
Caught an unsupported operation exception: null
Original set after adding "Frank": [Alice, Bob, Charlie, David, Eva, Frank]
Unmodifiable set after adding "Frank": [Alice, Bob, Charlie, David, Eva, Frank]

从结果可以看出,Collections.unmodifiableNavigableSet() 方法确实创建了一个不可修改的 NavigableSet,在尝试修改该集合时,会抛出 UnsupportedOperationException。注意,尽管 unmodifiableSet 是不可修改的,但原始集合 originalSet 仍然是可变的。