Jambu Batu - Peta

1. Gambaran keseluruhan

Dalam tutorial ini kami akan menerangkan cara yang paling berguna untuk memanfaatkan Jambu Batu untuk bekerja dengan Peta Java .

Mari mulakan dengan sangat mudah dan buat HashMap tanpa operator baru , menggunakan Jambu:

Map aNewMap = Maps.newHashMap();

2. Peta Tidak Berubah

Seterusnya - mari kita lihat cara membuat ImmutableMap menggunakan Jambu :

@Test public void whenCreatingImmutableMap_thenCorrect() { Map salary = ImmutableMap. builder() .put("John", 1000) .put("Jane", 1500) .put("Adam", 2000) .put("Tom", 2000) .build(); assertEquals(1000, salary.get("John").intValue()); assertEquals(2000, salary.get("Tom").intValue()); }

3. Peta Disusun

Sekarang - mari kita lihat membuat dan bekerjasama dengan SortedMap .

Dalam contoh berikut - kami membuat peta yang disusun menggunakan pembina Jambu yang sesuai:

@Test public void whenUsingSortedMap_thenKeysAreSorted() { ImmutableSortedMap salary = new ImmutableSortedMap .Builder(Ordering.natural()) .put("John", 1000) .put("Jane", 1500) .put("Adam", 2000) .put("Tom", 2000) .build(); assertEquals("Adam", salary.firstKey()); assertEquals(2000, salary.lastEntry().getValue().intValue()); }

4. BiMap

Seterusnya - mari kita bincangkan cara menggunakan BiMap . Kita boleh menggunakan BiMap untuk memetakan kunci kembali ke nilai kerana memastikan nilainya unik.

Dalam contoh berikut - kami membuat BiMap dan kita mendapat kebalikannya () :

@Test public void whenCreateBiMap_thenCreated() { BiMap words = HashBiMap.create(); words.put("First", 1); words.put("Second", 2); words.put("Third", 3); assertEquals(2, words.get("Second").intValue()); assertEquals("Third", words.inverse().get(3)); }

5. Pelbagai peta

Sekarang - mari lihat Multimap .

Kita boleh menggunakan Multimap untuk mengaitkan setiap kunci dengan beberapa nilai seperti dalam contoh berikut:

@Test public void whenCreateMultimap_thenCreated() { Multimap multimap = ArrayListMultimap.create(); multimap.put("fruit", "apple"); multimap.put("fruit", "banana"); multimap.put("pet", "cat"); multimap.put("pet", "dog"); assertThat(multimap.get("fruit"), containsInAnyOrder("apple", "banana")); assertThat(multimap.get("pet"), containsInAnyOrder("cat", "dog")); }

5. Jadual

Sekarang mari kita lihat Jadual Jambu Batu ; kita menggunakan Jadual jika kita memerlukan lebih daripada satu kunci untuk mengindeks nilai .

Dalam contoh berikut - kami akan menggunakan jadual untuk menyimpan jarak antara bandar:

@Test public void whenCreatingTable_thenCorrect() { Table distance = HashBasedTable.create(); distance.put("London", "Paris", 340); distance.put("New York", "Los Angeles", 3940); distance.put("London", "New York", 5576); assertEquals(3940, distance.get("New York", "Los Angeles").intValue()); assertThat(distance.columnKeySet(), containsInAnyOrder("Paris", "New York", "Los Angeles")); assertThat(distance.rowKeySet(), containsInAnyOrder("London", "New York")); }

Kita juga dapat menggunakan Tables.transpose () untuk membalik kekunci baris dan lajur seperti dalam contoh berikut:

@Test public void whenTransposingTable_thenCorrect() { Table distance = HashBasedTable.create(); distance.put("London", "Paris", 340); distance.put("New York", "Los Angeles", 3940); distance.put("London", "New York", 5576); Table transposed = Tables.transpose(distance); assertThat(transposed.rowKeySet(), containsInAnyOrder("Paris", "New York", "Los Angeles")); assertThat(transposed.columnKeySet(), containsInAnyOrder("London", "New York")); }

6. Peta KelasToInstance

Seterusnya - Mari lihat ClassToInstanceMap . Kita boleh menggunakan ClassToInstanceMap jika kita mahu kelas objek menjadi kunci seperti dalam contoh berikut:

@Test public void whenCreatingClassToInstanceMap_thenCorrect() { ClassToInstanceMap numbers = MutableClassToInstanceMap.create(); numbers.putInstance(Integer.class, 1); numbers.putInstance(Double.class, 1.5); assertEquals(1, numbers.get(Integer.class)); assertEquals(1.5, numbers.get(Double.class)); }

7. Senarai Kumpulan Menggunakan Multimap

Seterusnya - mari kita lihat cara mengelompokkan Senarai menggunakan Multimap . Dalam contoh berikut - kami mengelompokkan Senarai nama mengikut panjangnya menggunakan Multimaps.index () :

@Test public void whenGroupingListsUsingMultimap_thenGrouped() { List names = Lists.newArrayList("John", "Adam", "Tom"); Function func = new Function(){ public Integer apply(String input) { return input.length(); } }; Multimap groups = Multimaps.index(names, func); assertThat(groups.get(3), containsInAnyOrder("Tom")); assertThat(groups.get(4), containsInAnyOrder("John", "Adam")); }

8. Kesimpulannya

Dalam tutorial ringkas ini, kami membincangkan penggunaan yang paling biasa dan berguna untuk bekerja dengan Peta menggunakan perpustakaan Jambu .

Pelaksanaan semua contoh dan potongan kode ini terdapat di projek Guava GitHub saya - ini adalah projek berasaskan Eclipse, jadi semestinya mudah untuk diimport dan dijalankan sebagaimana adanya.