Rumah  >  Artikel  >  Java  >  Apakah struktur data rangka kerja pengumpulan Java

Apakah struktur data rangka kerja pengumpulan Java

WBOY
WBOYke hadapan
2023-05-28 15:58:571626semak imbas

    Apakah itu rangka kerja koleksi?

    Di Java, terdapat satu set struktur data sedia, seperti senarai jujukan, senarai terpaut, baris gilir, tindanan, baris gilir keutamaan, jadual cincang, dsb., yang dirangkumkan ke dalam antara muka/kelas yang sepadan untuk pengaturcara untuk terus Untuk menggunakannya, anda hanya perlu mencipta objek yang berkaitan untuk menggunakannya, tanpa perlu melaksanakan struktur dalaman mereka.

    Kutipan ialah struktur data yang menyimpan dan mengurus berbilang elemen, di mana elemen ini diletakkan dalam satu unit dan boleh diproses melalui operasi seperti penambahan, pemadaman, pengubahsuaian dan pertanyaan. Contohnya, satu set kad permainan (kumpulan kad), buku alamat (satu set hubungan pemetaan antara nama dan nombor telefon), dsb. boleh digunakan sebagai contoh.

    Gambar di bawah sangat penting! ! ! Anda perlu ingat antara muka dan kelas yang biasa digunakan! !

    Apakah struktur data rangka kerja pengumpulan Java

    Apakah struktur data rangka kerja pengumpulan Java

    Oleh kerana antara muka peta tidak melaksanakan antara muka Iterable, bagaimana untuk melaksanakannya untuk melintasi elemen?

    		Map<Integer,String> map = new HashMap();
            map.put(1,"jack");
            map.put(2,"tom");
            Set<Map.Entry<Integer, String>> entries = map.entrySet();
            // 使用迭代器进行遍历 ,增强 for同理
            Iterator<Map.Entry<Integer, String>> iterator = entries.iterator();
            while (iterator.hasNext()) {
                Map.Entry<Integer, String> entry =  iterator.next();
                System.out.println(entry.getKey() + " " + entry.getValue());
            }

    Mengambil HashMap sebagai contoh, anda boleh memanggil kaedah entrySet() untuk merangkum setiap pasangan nilai kunci dalam peta ke dalam Map.Entry antara muka Set digunakan untuk menerimanya, anda boleh menggunakan iterator atau for-each() untuk melintasi, dan setiap objek masukan mempunyai kaedah getKey() dan getValue() untuk mendapatkan nilai kunci dan nilai nilai masing-masing.

    Perhubungan asas (versi ringkas)

    Apakah struktur data rangka kerja pengumpulan Java

    2 antara muka Koleksi

    diterima umum oleh antara muka atau kelas yang melaksanakan antara muka Koleksi. Laksanakan secara khusus objek kelas, kerana seperti yang dapat dilihat dari rajah di atas, antara muka Koleksi ialah antara muka induk bagi satu siri antara muka dan kelas Ia mempunyai sedikit kaedah yang dilaksanakan secara dalaman, jadi ia tidak boleh memanggil beberapa kaedah biasa subkelas .

    1. Tentukan jenis objek dalam koleksi yang sepadan melalui generik

    Nota: Jenis yang dihantar di sini hanya boleh menjadi jenis rujukan Jika ia adalah jenis data asas, kelas pembalutnya digunakan. Nyatakan

    		Collection<String> collection1 = new ArrayList();
            collection1.add("haha");
            collection1.add("world");
            Collection<Integer> collection2 = new ArrayList();
            collection2.add(1);
            collection2.add(2);
            //collection2.add("hh");// 这里会报错,不符合传入的指定类型Integer

    2. Kaedah biasa koleksi gunakan

    方法 作用
    void clear() 删除集合中的所有元素
    boolean isEmpty() 判断集合是否没有任何元素,俗称空集合
    boolean remove(Object e) 如果元素 e 出现在集合中,删除其中一个
    boolean add(E e) 将元素 e 放入集合中
    int size() 返回集合中的元素个数
    Object[] toArray() 返回一个装有所有集合中元素的数组

    Nota: Dalam kaedah Object[] toArray() terakhir, tatasusunan jenis Object[] dikembalikan, pendekatan asas Ya: Keluarkan elemen dalam koleksi satu demi satu, tukarkannya menjadi objek Objek, simpannya dalam tatasusunan untuk dikembalikan, dan akhirnya kembalikan tatasusunan jenis Objek[]. Pengecualian penukaran jenis dilemparkan apabila menukar kepada tatasusunan String[].

    Apakah struktur data rangka kerja pengumpulan Java

    Oleh kerana tiada jaminan bahawa setiap elemen dalam tatasusunan ditukar kepada String, tetapi ia hanya dipaksa untuk ditukar secara keseluruhan kepada tatasusunan jenis String[] , jadi jika anda perlu Untuk menukar, anda perlu terlebih dahulu merentasi hasil yang dikembalikan, menukarnya kepada jenis String satu demi satu, dan akhirnya menetapkannya kepada tatasusunan jenis String[]. Ia tidak disyorkan untuk menukar jenis tatasusunan secara keseluruhan di Jawa.

    		Object[] objects = collection1.toArray();
            String[] strings = new String[objects.length];
            for (int i = 0; i < objects.length; i++) {
                strings[i] = (String)objects[i];// 一个一个转,但是没啥必要
            }

    3. Antara muka peta

    menyimpan data dalam bentuk Nilai nilai yang sepadan. Nilai kunci yang berbeza boleh sepadan dengan nilai yang sama. HashMap: Apabila menyimpan elemen, fungsi hashCode dalaman dipanggil berdasarkan nilai utamanya untuk mencari lokasi di mana elemen harus diletakkan Oleh itu, elemen dalam jadual hash tidak disimpan dalam susunan ia disimpan.

    Cara biasa untuk menggunakan Peta

    方法 作用
    V get(Object k) 根据指定k查找对应v
    V getOrDefault(Object k, V defaultValue) 根据指定的 k 查找对应的 v,没有找到则返回默认值
    V put(K key, V value) 将指定的 k-v 放入 Map
    boolean containsKey(Object key) 判断是否包含 key
    boolean containsValue(Object value) 判断是否包含 value
    Set> entrySet() 将所有键值对返回
    boolean isEmpty() 判断是否为空
    int size() 返回键值对的数量
    		HashMap<Integer, String> map = new HashMap<>();
    
            // put()
            map.put(1,"张飞");// 这里的 key 值唯一
            map.put(1,"宋江");// 如果二次插入的 key 值之前有,则替换其 value值
            map.put(2,"Jack");
            System.out.println(map);
    
            // get()
            String s1 = map.get(1);// 返回 宋江
            String s3 = map.getOrDefault(3,"三团");// 未找到,返回 三团
    
            // entrySet()
            // 该方法返回一个 Set<Map.Entry<Integer, String>> 对象
            Set<Map.Entry<Integer, String>> entries = map.entrySet();
            for (Map.Entry<Integer, String> entry : entries) {
                // 通过 entry.getKey() 和 entry.getValue() 获取每个entry对应的 k, v值
                System.out.println(entry.getKey() + " " + entry.getValue());
            }

    Apakah struktur data rangka kerja pengumpulan Java

    4、具体的实现类

    Apakah struktur data rangka kerja pengumpulan Java

    Atas ialah kandungan terperinci Apakah struktur data rangka kerja pengumpulan Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam