Saya mencari cara yang sangat sederhana untuk membuat Set.
Arrays.asList("a", "b" ...)
menciptakan sebuah List<String>
Apakah ada yang serupa Set
?
java
collections
cahen
sumber
sumber
Jawaban:
Sekarang dengan Java 8 Anda dapat melakukan ini tanpa perlu kerangka pihak ketiga:
Lihat Kolektor .
Nikmati!
sumber
Menggunakan Jambu biji , sesederhana itu:
Atau untuk set yang bisa berubah:
Untuk tipe data selengkapnya, lihat panduan pengguna Jambu
sumber
Sets.newHashSet("a", "b")
atauSets.newLinkedHashSet("a", "b")
Sets.newLinkedHashSet()
tidak ada dengan tanda tangan itu, maafSet<String> mySet = ImmutableSet.of("a", "b");
Anda bisa menggunakan
sumber
Untuk kasus khusus set dengan nol atau satu anggota, Anda dapat menggunakan:
dan:
sumber
java.util.Collections.emptySet()
adalah, dalam pikiran saya, lebih disukai daripada EMPTY_SET, karena keamanan tipe. Dari komentar di kelas Koleksi:Unlike the like-named field, this method is parameterized.
Seperti yang dikatakan orang lain, gunakan:
Alasan ini tidak ada di Java adalah karena
Arrays.asList
mengembalikan daftar berukuran tetap, dengan kata lain:Pengembalian:
Tidak ada implementasi JDK dari "ukuran tetap"
Set
di dalamArrays
kelas. Kenapa kamu menginginkan ini? ASet
menjamin bahwa tidak ada duplikat, tetapi jika Anda mengetiknya dengan tangan, Anda seharusnya tidak memerlukan fungsionalitas itu ... danList
memiliki lebih banyak metode. Kedua antarmuka meluasCollection
danIterable
.Seperti yang dikatakan orang lain, gunakan jambu biji Jika Anda benar-benar menginginkan fungsi ini - karena tidak ada di JDK. Lihatlah jawaban mereka (khususnya jawaban Michael Schmeißer) untuk informasi tentang itu.
sumber
Di Java 9, fungsi serupa telah ditambahkan melalui metode pabrik:
(Ada juga yang setara
List
.)sumber
Tidak, tetapi Anda bisa melakukannya seperti ini
sumber
Di jambu biji bisa digunakan
newHashSet
sumber
Berikut sedikit metode yang dapat Anda gunakan
sumber
Cara lain untuk melakukannya menggunakan Java 8 dan enum adalah:
Lihat EnumSet .
Saya akan merekomendasikan analisis kinerja antara pendekatan ini dan
karena jika Anda memiliki lebih dari lima elemen, javadoc dari metode menyatakan yang mungkin menjadi masalah kinerja seperti yang Anda lihat di javadoc dari Set.Of (E, E ...) .
sumber