Buku Masakan Koleksi Jambu Batu

1. Pengenalan

Artikel buku masakan ini disusun dalam resipi kecil dan terfokus serta coretan kod untuk menggunakan koleksi gaya Jambu Batu.

Formatnya adalah senarai contoh kod yang semakin meningkat tanpa perlu penjelasan tambahan - ini bertujuan untuk memastikan penggunaan umum API mudah diakses semasa pembangunan.

2. Resepi

menurunkan Senarai ke Senarai

- nota : ini adalah penyelesaian untuk koleksi yang dihasilkan bukan 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 mudah tanpa Jambu - melibatkan 2 operasi pemeran

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

menambahkan berulang pada koleksi

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

periksa sama ada koleksi mengandungi elemen mengikut peraturan pemadanan tersuai

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);

penyelesaian alternatif menggunakan carian

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);

penyelesaian alternatif hanya terpakai 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 on Iterables. Cari bila tidak dijumpai

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)

- penyelesaian : ada kaedah mencari yang terlalu banyak yang mengambil nilai kembali lalai sebagai argumen dan dapat dipanggil dengan nol untuk tingkah laku yang diinginkan:

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

alih keluar semua nilai nol dari koleksi

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

buat Senarai / Set / Peta yang tidak berubah 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");

buat Senarai / Set / Peta yang tidak berubah dari koleksi standard

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);

penyelesaian alternatif menggunakan pembina

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 Batu

Jambu biji adalah perpustakaan yang komprehensif dan berguna - berikut adalah beberapa lagi API yang diliputi dalam bentuk buku masakan:

  • Buku Memasak Jambu Batu

  • Buku Masakan Berfungsi Jambu Batu

Nikmati.

4. Melangkah Ke Depan

Seperti yang saya nyatakan pada awalnya, saya bereksperimen dengan format yang berbeza ini - buku masakan - untuk berusaha mengumpulkan tugas-tugas biasa yang mudah dengan menggunakan Koleksi Jambu Batu di satu tempat. Fokus format ini adalah kesederhanaan dan kepantasan, jadi kebanyakan resipi tidak mempunyai penjelasan tambahan selain contoh kod itu sendiri .

Akhirnya - Saya melihat ini sebagai dokumen hidup - Saya akan terus menambah resipi dan contoh ketika saya menjumpainya. Jangan ragu untuk memberikan lebih banyak komen dan saya akan memasukkannya ke dalam buku masakan.

Pelaksanaan semua contoh dan coretan kod ini dapat dilihat di GitHub - ini adalah projek berasaskan Maven, jadi mudah untuk diimport dan dijalankan sebagaimana adanya.