Buku Resep Koleksi Jambu Biji

1. Perkenalan

Artikel buku masak ini disusun menjadi resep kecil dan terfokus serta cuplikan kode untuk menggunakan koleksi gaya Jambu.

Formatnya adalah daftar contoh kode yang terus bertambah tanpa perlu penjelasan tambahan - ini dimaksudkan untuk menjaga agar penggunaan umum API mudah diakses selama pengembangan.

2. Resep

menundukkan Daftar ke Daftar

- catatan : ini adalah solusi untuk koleksi yang dibuat non-kovarian di Java

class CastFunction implements Function { @Override public final T apply(final F from) { return (T) from; } } List originalList = Lists.newArrayList(); List theList = Lists.transform(originalList, new CastFunction());

alternatif yang lebih sederhana tanpa Jambu - melibatkan 2 operasi cor

List originalList = Lists.newArrayList(); List theList = (List) (List) originalList;

menambahkan iterable ke koleksi

Iterable iter = Lists.newArrayList(); Collection collector = Lists.newArrayList(); Iterables.addAll(collector, iter);

periksa apakah koleksi berisi elemen sesuai dengan aturan pencocokan khusus

Iterable theCollection = Lists.newArrayList("a", "bc", "def"); boolean contains = Iterables.any(theCollection, new Predicate() { @Override public boolean apply(final String input) { return input.length() == 1; } }); assertTrue(contains);

solusi alternatif menggunakan pencarian

Iterable theCollection = Sets.newHashSet("a", "bc", "def"); boolean contains = Iterables.find(theCollection, new Predicate() { @Override public boolean apply(final String input) { return input.length() == 1; } }) != null; assertTrue(contains);

solusi alternatif hanya berlaku untuk Set

Set theCollection = Sets.newHashSet("a", "bc", "def"); boolean contains = !Sets.filter(theCollection, new Predicate() { @Override public boolean apply(final String input) { return input.length() == 1; } }).isEmpty(); assertTrue(contains);

NoSuchElementException di Iterables.find jika tidak ada yang ditemukan

Iterable theCollection = Sets.newHashSet("abcd", "efgh", "ijkl"); Predicate inputOfLengthOne = new Predicate() { @Override public boolean apply(final String input) { return input.length() == 1; } }; String found = Iterables.find(theCollection, inputOfLengthOne);

- ini akan membuang yang NoSuchElementException pengecualian :

java.util.NoSuchElementException at com.google.common.collect.AbstractIterator.next(AbstractIterator.java:154) at com.google.common.collect.Iterators.find(Iterators.java:712) at com.google.common.collect.Iterables.find(Iterables.java:643)

- solusi : ada metode find yang kelebihan beban yang menggunakan nilai kembalian default sebagai argumen dan dapat dipanggil dengan null untuk perilaku yang diinginkan:

String found = Iterables.find(theCollection, inputOfLengthOne, null);

hapus semua nilai null dari koleksi

List values = Lists.newArrayList("a", null, "b", "c"); Iterable withoutNulls = Iterables.filter(values, Predicates.notNull());

membuat Daftar / Set / Peta yang tidak dapat diubah secara langsung

ImmutableList immutableList = ImmutableList.of("a", "b", "c"); ImmutableSet immutableSet = ImmutableSet.of("a", "b", "c"); ImmutableMap imuttableMap = ImmutableMap.of("k1", "v1", "k2", "v2", "k3", "v3");

membuat Daftar / Set / Peta yang tidak dapat diubah dari koleksi standar

List muttableList = Lists.newArrayList(); ImmutableList immutableList = ImmutableList.copyOf(muttableList); Set muttableSet = Sets.newHashSet(); ImmutableSet immutableSet = ImmutableSet.copyOf(muttableSet); Map muttableMap = Maps.newHashMap(); ImmutableMap imuttableMap = ImmutableMap.copyOf(muttableMap);

solusi alternatif menggunakan pembangun

List muttableList = Lists.newArrayList(); ImmutableList immutableList = ImmutableList. builder().addAll(muttableList).build(); Set muttableSet = Sets.newHashSet(); ImmutableSet immutableSet = ImmutableSet. builder().addAll(muttableSet).build(); Map muttableMap = Maps.newHashMap(); ImmutableMap imuttableMap = ImmutableMap. builder().putAll(muttableMap).build();

3. Lebih Banyak Buku Masak Jambu Biji

Guava adalah perpustakaan yang komprehensif dan sangat berguna - berikut ini beberapa API lagi yang tercakup dalam bentuk buku masak:

  • Buku Resep Pemesanan Jambu Biji

  • Buku Resep Fungsional Jambu Biji

Nikmati.

4. Maju

Seperti yang saya sebutkan di awal, saya bereksperimen dengan format yang berbeda ini - buku masak - untuk mencoba mengumpulkan tugas umum sederhana menggunakan Koleksi Jambu Biji di satu tempat. Fokus dari format ini adalah kesederhanaan dan kecepatan, sehingga sebagian besar resep tidak memiliki penjelasan tambahan selain contoh kode itu sendiri .

Akhirnya - Saya melihatnya sebagai dokumen hidup - Saya akan terus menambahkan resep dan contoh saat saya menemukannya. Jangan ragu untuk memberikan lebih banyak di komentar dan saya akan mencoba memasukkannya ke dalam buku masak.

Penerapan semua contoh dan cuplikan kode ini dapat ditemukan di GitHub - ini adalah proyek berbasis Maven, jadi semestinya mudah untuk mengimpor dan menjalankannya apa adanya.