Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

วิธีการใช้ Set interface ใน JShell ใน Java 9?


JShell เป็นเครื่องมือบรรทัดคำสั่งใน Java 9 ที่ใช้ในการรันคำสั่งง่ายๆ เช่น นิพจน์ คลาส อินเตอร์เฟส เมธอด และอื่นๆ

A ชุด เป็นอินเทอร์เฟซใน Java ที่ระบุสัญญาสำหรับคอลเลกชันที่มี องค์ประกอบที่ไม่ซ้ำกัน . ถ้า object1.equals(object2) คืนค่า จริง จากนั้นเพียงหนึ่งใน object1 และ object2 เท่านั้นที่มีที่ในการใช้งาน Set

ในข้อมูลโค้ดด้านล่าง เราต้องใช้ Set.of() กระบวนการ. คอลเลกชันที่ส่งคืนโดย Set.of() วิธีการ ไม่เปลี่ยนรูป ดังนั้นจึงไม่รองรับ add() กระบวนการ. หากเราพยายามเพิ่มองค์ประกอบ ให้แสดง UnsupportedOperationException . หากเราต้องการสร้าง HashSet คอลเลกชันแทนซึ่งสนับสนุน add() วิธีการทดสอบคุณสมบัติเฉพาะของชุด คืนค่า false บ่งชี้ว่าการแทรกรายการ "Adithya" ที่ซ้ำกันล้มเหลว

Snippet-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 โดยที่องค์ประกอบจะไม่ถูกจัดเก็บตามลำดับการแทรกหรือเรียงลำดับ

Snippet-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 ซึ่งองค์ประกอบจะถูกจัดเก็บในลำดับของ การแทรก .

Snippet-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 ซึ่งองค์ประกอบจะถูกเก็บไว้ใน การเรียงลำดับ .

Snippet-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]