如何在 Java 9 的 JShell 中實現 Set 介面?


JShell 是 Java 9 中的一個命令列工具,用於執行簡單的語句,例如表示式、類、介面、方法等。

Set 是 Java 中的一個介面,它指定了一個包含**唯一元素**的集合的契約。如果**object1.equals(object2)** 返回 true,則 object1 和 object2 中只有一個可以在 Set 實現中佔據位置。

在下面的程式碼片段中,我們需要使用**Set.of()** 方法。**Set.of()** 方法返回的集合是**不可變的**,因此不支援**add()** 方法。如果我們嘗試新增元素,則會丟擲**UnsupportedOperationException**。如果我們想要建立一個**HashSet** 集合(它支援**add()** 方法來測試 Set 的唯一屬性),則它返回 false 表示插入重複的 "Adithya" 條目失敗。

片段 1

jshell> Set<String> set = Set.of("Adithya", "Chaitanya", "Jai");
set ==> [Jai, Adithya, Chaitanya]

jshell> set.add("Adithya");
|   java.lang.UnsupportedOperationException thrown:

jshell> Set<String> hashSet = new HashSet<>(set);
hashSet ==> [Chaitanya, Jai, Adithya]

jshell> hashSet.add("Adithya");
$8 ==> false

jshell> hashSet
hashSet ==> [Chaitanya, Jai, Adithya]


在下面的程式碼片段中,我們需要實現**HashSet**,其中元素既不按插入順序儲存,也不按排序順序儲存。

片段 2

jshell> Set<Integer> numbers = new HashSet<>();
numbers ==> []

jshell> numbers.add(12345);
$11 ==> true

jshell> numbers.add(1234);
$12 ==> true

jshell> numbers.add(123);
$13 ==> true

jshell> numbers.add(12);
$14 ==> true

jshell> numbers
numbers ==> [1234, 12345, 123, 12]


在下面的程式碼片段中,我們需要實現**LinkedHashSet**,其中元素按**插入**順序儲存。

片段 3

jshell> Set<Integer> numbers1 = new LinkedHashSet<>();
numbers1 ==> []

jshell> numbers1.add(12345);
$17 ==> true

jshell> numbers1.add(1234);
$18 ==> true

jshell> numbers1.add(123);
$19 ==> true

jshell> numbers1.add(12);
$20 ==> true

jshell> numbers1
numbers1 ==> [12345, 1234, 123, 12]

jshell> numbers1.add(123456);
$22 ==> true

jshell> numbers1
numbers1 ==> [12345, 1234, 123, 12, 123456]


在下面的程式碼片段中,我們需要實現**TreeSet**,其中元素按**排序**順序儲存。

片段 4

jshell> Set<Integer> numbers2 = new TreeSet<>();
numbers2 ==> []

jshell> numbers2.add(12345);
$25 ==> true

jshell> numbers2.add(1234);
$26 ==> true

jshell> numbers2.add(123);
$27 ==> true

jshell> numbers2.add(12);
$28 ==> true

jshell> numbers2
numbers2 ==> [12, 123, 1234, 12345]

jshell> numbers2.add(123456);
$30 ==> true

jshell> numbers2
numbers2 ==> [12, 123, 1234, 12345, 123456]

更新於: 2020-04-30

123 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.