Tidak, metode ini tidak ada di Jambu biji dan sebenarnya ada di "kuburan ide" kami.
Kami tidak percaya bahwa "adalah nol atau kosong" adalah pertanyaan yang ingin Anda tanyakan tentang koleksi.
Jika sebuah koleksi mungkin nol, dan nol harus diperlakukan sama dengan kosong, maka keluarkan semua ambiguitas itu di depan, seperti ini:
Set<Foo> foos = NaughtyClass.getFoos();
if (foos == null) {
foos = ImmutableSet.of();
}
atau seperti ini (jika Anda lebih suka):
Set<Foo> foos = MoreObjects.firstNonNull(
NaughtyClass.getFoos(), ImmutableSet.<Foo>of());
Setelah itu, baru bisa digunakan .isEmpty()
seperti biasa. Lakukan ini segera setelah memanggil API nakal dan Anda telah melupakan keanehan, alih-alih membiarkannya berlanjut tanpa batas.
Dan jika "null yang sebenarnya berarti koleksi kosong" tidak dikembalikan kepada Anda, tetapi diteruskan kepada Anda, tugas Anda mudah: biarkan NullPointerException
saja dilemparkan, dan buat pemanggil itu terbentuk.
null
ke koleksi kosong secepat mungkin. Jika Anda tidak bisa, maka oke, Anda mungkin salah satu dari <1% pengguna yang benar-benar ingin menulis helper isNullOrEmpty (Collection) sepele mereka sendiri.if (collection == null || collection.isEmpty())
dalam kasus di mana Anda membutuhkannya! Apakah itu sangat buruk?)Satu hal yang akan cenderung Anda temukan di seluruh Guava adalah bahwa mereka cenderung sangat antagonis terhadap
null
s. Penulis ingin mencegah Anda menggunakannull
sebanyak mungkin yang Anda lakukan, dan menyediakan metode utilitas untuk membuatnya lebih mudah digunakannull
akan menjadi kontraproduktif terhadap tujuan ini.Jika Anda ingin menggunakan paradigma Guava, pertimbangkan apakah sumber koleksi (atau larik) ini benar-benar harus dikembalikan secara opsional
null
. Jika tidak, pertimbangkan untuk menandainya@NonNull
dan mengembalikan koleksi kosong sebagai gantinull
. Atau sebagai parameter untuk fungsi yang mengharapkannull
daftar tanpa nilai, pertimbangkan untuk menggunakanPreconditions.checkNotNull
, yang memunculkan pengecualian jika anull
(secara tidak terduga) diteruskan.Jika
null
memang sah,list == null || list.isEmpty()
tidaklah sulit.sumber
Ada CollectionUtils.isEmpty () di commons-collections.
sumber
Spring Framework memiliki kelas util khusus yang disebut
CollectionUtils
. Dan metode yang Anda cari adalah:org.springframework.util.CollectionUtils.isEmpty
. Ini mengembalikan true untuk koleksi kosong dan kosong.Dan untuk array ada
org.springframework.util.ObjectUtils.isEmpty
metode yang berperilaku hampir sama.sumber
Apache CollectionUtils 4 memiliki metode CollectionUtils.emptyIfNull () yang mengembalikan daftar kosong jika collection null. Ini sangat berguna dalam foreach loop, jadi Anda tidak perlu melakukan pemeriksaan null sebelum melakukan iterasi
sumber
Solusi saya adalah: MoreObjects.firstNonNull (list, Collections. EmptyList ())
Saya menggunakan Guava MoreObjects dengan Koleksi JDK.
sumber
ImmutableList
.Lihat Appache Collections CollectionUtils.isEmpty () mengembalikan nilai true jika collection kosong atau kosong
sumber