Cara Memeriksa Jika Kunci Ada dalam Peta

1. Gambaran keseluruhan

Dalam tutorial ringkas ini, kita akan mencari cara untuk memeriksa apakah kunci ada dalam Peta .

Secara khusus, kami akan memfokuskan pada mengandungKey dan mendapatkan.

2. mengandungiKey

Sekiranya kita melihat JavaDoc untuk Peta # mengandungKey :

Kembali benar jika peta ini mengandungi pemetaan untuk kunci yang ditentukan

Kita dapat melihat bahawa kaedah ini adalah calon yang cukup baik untuk melakukan apa yang kita mahukan.

Mari buat peta yang sangat mudah dan sahkan kandungannya dengan mengandungKey :

@Test public void whenKeyIsPresent_thenContainsKeyReturnsTrue() { Map map = Collections.singletonMap("key", "value"); assertTrue(map.containsKey("key")); assertFalse(map.containsKey("missing")); }

Ringkasnya, berisiKey memberitahu kita sama ada peta itu mengandungi kunci itu.

3. dapatkan

Sekarang, get kadang-kadang kerja juga, tetapi ia datang dengan beberapa bagasi, bergantung kepada sama ada atau tidak Peta pelaksanaan menyokong nilai nol.

Sekali lagi, mengambil lihat pada Peta Javadoc 's, kali ini untuk Peta # put , kita melihat bahawa ia hanya akan membuang NullPointerException :

jika kunci atau nilai yang ditentukan adalah nol dan peta ini tidak membenarkan kunci atau nilai nol

Oleh kerana beberapa pelaksanaan Peta dapat memiliki nilai nol (seperti HashMap ), mungkin untuk mendapatkan kembali nol walaupun kuncinya ada.

Oleh itu, jika tujuan kita adalah untuk melihat sama ada kunci mempunyai nilai atau tidak, maka get akan berfungsi:

@Test public void whenKeyHasNullValue_thenGetStillWorks() { Map map = Collections.singletonMap("nothing", null); assertTrue(map.containsKey("nothing")); assertNull(map.get("nothing")); }

Tetapi, jika kita hanya ingin memastikan bahawa kunci itu ada, maka kita harus tetap dengan mengandungKey .

4. Kesimpulan

Dalam artikel ini, kami melihat berisiKey . Kami juga melihat lebih dekat mengapa berisiko menggunakan get untuk mengesahkan keberadaan kunci.

Seperti biasa, lihat contoh kod di Github.