国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Map集合體系(HashMap,LinkedHashMap,TreeMap)

這篇具有很好參考價(jià)值的文章主要介紹了Map集合體系(HashMap,LinkedHashMap,TreeMap)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

1.Map集合

2.hashMap集合

3.LinkedHashMap集合

4.?TreeMap集合

Map集合體系(HashMap,LinkedHashMap,TreeMap),數(shù)據(jù)結(jié)構(gòu)

1.Map集合

????????Map集合是鍵值對(duì)集合

????????格式:{key1=value1, key2=value2, key3=value3, ...}

????????Map系列集合的特點(diǎn)都是由鍵決定的,值只是一個(gè)附屬品,值不做要求

2.實(shí)現(xiàn)類(lèi)有哪些?,各自有什么特點(diǎn)?

????????HashMap:無(wú)序、不重復(fù)、無(wú)索引; (用的最多)

????????LinkedHashMap:有序、不重復(fù)、無(wú)索引

????????TreeMap:按照大小默認(rèn)升序排序、不重復(fù)、無(wú)索引

3.Map的常用方法

????????Map是雙列集合的祖宗,它的功能是全部雙列集合都可以繼承過(guò)來(lái)使用的。

????????????????????????Map集合體系(HashMap,LinkedHashMap,TreeMap),數(shù)據(jù)結(jié)構(gòu)

代碼展示:

package com.itheima.day08.teacher.map01;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class MapDemo01 {

    /*
      Map集合是什么?有什么特點(diǎn)?
         Map是雙列集合,也叫鍵值對(duì)兒集合。
            里面的元素是一對(duì)兒一對(duì)兒的。這一對(duì)兒元素稱(chēng)為鍵值對(duì)對(duì)象,Entry對(duì)象。
            當(dāng)存儲(chǔ)多個(gè) 一一對(duì)應(yīng)數(shù)據(jù)的時(shí)候,使用Map。
         特點(diǎn):
            鍵唯一,值可以重復(fù),每個(gè)鍵都只能找到自己對(duì)應(yīng)的值。

      Map集合實(shí)現(xiàn)類(lèi)有哪些?
         HashMap  鍵 唯一 無(wú)序  無(wú)索引 值無(wú)所謂
            LinkedHashMap 鍵 唯一 有序  無(wú)索引 值無(wú)所謂
         TreeMap
                  鍵 唯一 可排序  無(wú)索引 值無(wú)所謂
      Map集合常用方法:
           集合對(duì)象的創(chuàng)建
           一般采用空參構(gòu)造
           Map<K,V>  泛型K表示鍵的類(lèi)型 泛型V表示值的類(lèi)型
          Map<鍵的類(lèi)型,值的類(lèi)型> map =  new 子類(lèi)對(duì)象<>();
           增  刪  改  查
            V put(K key,V value) 存放一對(duì)元素
              put有倆層 意思
                如果 鍵沒(méi)有在集合中出現(xiàn),此時(shí)put是添加。 V返回是null.
                    鍵在集合中出現(xiàn)了,此時(shí)put是修改。 V 返回的是被替換的值。
              HashMap中是可以存儲(chǔ) null值 null鍵

             boolean isEmpty() 集合是否為空 為空true

             int size() 查看鍵值對(duì)個(gè)數(shù)
             clear() 清空 集合中所有鍵值對(duì)全刪了

             查  map特點(diǎn) 以鍵為準(zhǔn)的
               V get(K key)根據(jù)鍵找值
             刪
               V remove(K key)根據(jù)鍵刪除當(dāng)前的鍵值對(duì)關(guān)系
             包含
                boolean containsKey(K k)是否包含指定的鍵
                boolean containsValue(V v)是否包含指定值
             獲取 鍵集  值集
             Set<K> keySet() 獲取鍵集
             Collection<V> values() 獲取值集
           集合的遍歷

     */
    public static void main(String[] args) {
        //1:創(chuàng)建集合對(duì)象
        Map<String,Integer> map = new HashMap<>();//多態(tài)形勢(shì)下研究 通用方法
        //2:集合里面當(dāng)前沒(méi)有內(nèi)容
        System.out.println("當(dāng)前集合是不是空的呢?"+map.isEmpty());
        //3:添加鍵值對(duì)元素到 集合中
        map.put("隨便",3);
        map.put("記憶枕",30);
        map.put("大鵝",10000);
        map.put("叮當(dāng)貓",0);
        map.put("隨便",4);//修改
        //4:查看集合中元素個(gè)(對(duì))數(shù)
        System.out.println("當(dāng)前集合有:"+map.size()+"對(duì)元素");
        System.out.println(map);
        //5:清空集合--
//        map.clear();
//        System.out.println(map);
        //6:根據(jù)鍵找值 如果找不到 返回null 找到返回對(duì)應(yīng)的值。
        System.out.println("大鵝的價(jià)格:"+map.get("大鵝"));
        System.out.println("大鴉的價(jià)格:"+map.get("大鴉"));
        //7:刪除
        System.out.println("刪除叮當(dāng)貓:"+map.remove("叮當(dāng)貓"));
        System.out.println("刪除之后的集合:"+map);
        //8:包含 不包含false 包含是true
        System.out.println("是否包含叮當(dāng)貓的鍵:"+map.containsKey("叮當(dāng)貓"));
        System.out.println("是否包含大鵝的鍵:"+map.containsKey("大鵝"));
        System.out.println("是否包含價(jià)格為30的商品:"+map.containsValue(30));
        //9:獲取鍵集和值集
        Set<String> keys = map.keySet();
        System.out.println(keys);
        Collection<Integer> values = map.values();
        System.out.println(values);

        //10:從上面方法中選擇一下  能不能完成 鍵值對(duì)兒數(shù)據(jù)的遍歷...

    }
}

4.Map的遍歷方式(三種)

????????1.鍵找值:keySet()獲取所有的鍵集合,在用get(),通過(guò)鍵獲取值遍歷
?? ?????2.鍵值對(duì):用entrySet() ,把鍵值合成一個(gè)整體在set集合里,遍歷用getKey()和getValue()
?? ?????3.Lambda:用forEarch,里面new BIconsumer

代碼展示:

package com.itheima.day08.teacher.map01;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class MapDemo02 {
    /*
      Map集合遍歷方式一:
         鍵找值
         步驟:
            先根據(jù)keySet()方法獲取鍵集
            遍歷鍵集得到每個(gè)鍵
            根據(jù)鍵找值 get(K k)
     */
    public static void main(String[] args) {
        // 準(zhǔn)備一個(gè)Map集合。
        Map<String, Double> map = new HashMap<>();
        map.put("蜘蛛精", 162.5);
        map.put("蜘蛛精", 169.8);
        map.put("紫霞", 165.8);
        map.put("至尊寶", 169.5);
        map.put("牛魔王", 183.6);
        System.out.println(map);//查看內(nèi)容不是遍歷
        //遍歷指的是 一個(gè)個(gè)取出來(lái)。
        //1:獲取map集合的鍵集
        Set<String> keys = map.keySet();
        //2:遍歷 增強(qiáng)for 得到每個(gè)鍵
        for (String key : keys) {
            //3:根據(jù)鍵 獲取對(duì)應(yīng)的值
            Double value = map.get(key);
            System.out.println(key+" : "+value);
        }

    }
}


-----------------
package com.itheima.day08.teacher.map01;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class MapDemo03 {
    /*
      Map集合遍歷方式二:(面向?qū)ο笏枷敕绞?
        鍵值對(duì)兒 方式......
           鍵值對(duì)兒對(duì)象 叫 Entry類(lèi)型
        每一個(gè) entry對(duì)象表示 一個(gè)鍵值對(duì)兒
       Set<Entry對(duì)象> entrySet()  獲取 "鍵值對(duì)兒"(整體) 集合
       Entry理解為 封裝了 鍵和值的一個(gè)特殊對(duì)象
           getKey() 獲取該對(duì)象的鍵
           getValue()獲取該對(duì)象的值
       Entry<K,V> K鍵的類(lèi)型 V 值的類(lèi)型
        Set<Map.Entry<K,V>> entrySet()

      步驟:
         1:map集合調(diào)用 entrySet()方法 得到 一個(gè) 存放 entry對(duì)象的 set集合
         2:遍歷 存放entry對(duì)象的set集合 得到每一個(gè) entry對(duì)象
         3:調(diào)用entry對(duì)象的 獲取鍵的方法 獲取值的方法 取出對(duì)應(yīng)鍵值
     */
    public static void main(String[] args) {
        // 準(zhǔn)備一個(gè)Map集合。
        Map<String, Double> map = new HashMap<>();
        map.put("蜘蛛精", 162.5);
        map.put("蜘蛛精", 169.8);
        map.put("紫霞", 165.8);
        map.put("至尊寶", 169.5);
        map.put("牛魔王", 183.6);
        System.out.println(map);
        // 1:map集合調(diào)用 entrySet()方法 得到 一個(gè) 存放 entry對(duì)象的 set集合
        Set<Map.Entry<String, Double>> entries = map.entrySet();
        //2:遍歷 存放entry對(duì)象的set集合 得到每一個(gè) entry對(duì)象
        for (Map.Entry<String, Double> entry : entries) {
            //entry就是存放 沒(méi)對(duì) 鍵值的 對(duì)象
            // 3:調(diào)用entry對(duì)象的 獲取鍵的方法 獲取值的方法 取出對(duì)應(yīng)鍵值
            String key = entry.getKey();
            Double value = entry.getValue();
            System.out.println(key+" : "+value);
        }


    }
}


------------------
package com.itheima.day08.teacher.map01;

import java.util.HashMap;
import java.util.Map;
import java.util.function.BiConsumer;

public class MapDemo04 {
    /*
      Map集合遍歷方式三:
         JDK8之后 Lambda方式
         map集合在JDK8之后提供類(lèi)一個(gè)
            forEach(處理鍵和值的接口)方法

     */
    public static void main(String[] args) {
        // 準(zhǔn)備一個(gè)Map集合。
        Map<String, Double> map = new HashMap<>();
        map.put("蜘蛛精", 162.5);
        map.put("蜘蛛精", 169.8);
        map.put("紫霞", 165.8);
        map.put("至尊寶", 169.5);
        map.put("牛魔王", 183.6);
        System.out.println(map);

        map.forEach(new BiConsumer<String, Double>() {
            @Override
            public void accept(String k, Double v) {//底層用一個(gè)方法去接收了 每次遍歷出來(lái)的鍵和值
                System.out.println(k+" : "+v);
            }
        });
        System.out.println("================");
        map.forEach((k,v)-> System.out.println(k+" : "+v));
    }
}

2.hashMap集合

????????HashMap集合的底層原理

? ? ? ? 1.HashMap跟HashSet的底層原理是一模一樣的,都是基于哈希表實(shí)現(xiàn)的。

????????????????JDK8之前,哈希表 = 數(shù)組+鏈表

????????????????JDK8開(kāi)始,哈希表 = 數(shù)組+鏈表+紅黑樹(shù)

????????????????哈希表是一種增刪改查數(shù)據(jù)性能都較好的數(shù)據(jù)結(jié)構(gòu)。

? ? ? ? 2.實(shí)際上:原來(lái)學(xué)的Set系列集合的底層就是基于Map實(shí)現(xiàn)的,只是Set集合中的元素只要鍵數(shù)據(jù),不要值數(shù)據(jù)而已。

? ? ? ? 3.HashMap如何實(shí)現(xiàn)鍵的唯一性的

????????????????依賴(lài)hashCode方法和equals方法保證鍵的唯一。

????????????????如果鍵要存儲(chǔ)的是自定義對(duì)象,需要重寫(xiě)hashCode和equals方法。

代碼演示:

????????

package com.itheima.day08.teacher.map02;

import java.util.Objects;
/**
    學(xué)生類(lèi)
*/
public class Student {

    private String name;
    private int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    /**
     * 獲取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 設(shè)置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 獲取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 設(shè)置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    public String toString() {
        return "Student{name = " + name + ", age = " + age + "}";
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age && Objects.equals(name, student.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}



-------------
package com.itheima.day08.teacher.map02;

import java.util.HashMap;

/**
 * HashMap測(cè)試類(lèi)
 */
public class HashMapDemo {

    public static void main(String[] args) {
        //創(chuàng)建一個(gè) 存儲(chǔ) 學(xué)生對(duì)象--籍貫對(duì)應(yīng) 關(guān)系的 集合
        HashMap<Student,String> map = new HashMap<>();
        //每次存一個(gè)學(xué)生對(duì)象--籍貫
        Student stu1 = new Student("小學(xué)", 15);
        Student stu2 = new Student("中學(xué)", 19);
        Student stu3 = new Student("高中", 22);
        Student stu4 = new Student("小學(xué)", 15);
        //stu1 來(lái)自 吉林  stu2 黑龍江  stu3 遼寧
        map.put(stu1,"吉林");
        map.put(stu2,"黑龍江");
        map.put(stu3,"遼寧");
        map.put(stu4,"熱河");//  map集合特點(diǎn)  鍵唯一
             // 沒(méi)有重寫(xiě) hashcode equals時(shí)候  兩次new 就是兩個(gè)不同的對(duì)象。
             // 我們會(huì)認(rèn)為 stu1 stu4 的 內(nèi)容一樣就是相同的對(duì)象---需要我們?nèi)ブ貙?xiě)鍵的hashCode equals方法

        map.forEach((k,v)->{
            System.out.println(k+"="+v);
        });
    }
}

3.LinkedHashMap集合

????????LinkedHashMap集合的底層原理

? ? ? ? 1.底層數(shù)據(jù)結(jié)構(gòu)依然是基于哈希表實(shí)現(xiàn)的,只是每個(gè)鍵值對(duì)元素又額外的多了一個(gè)雙鏈表的機(jī)制記錄元素順序(保證有序)。

? ? ? ? 2.實(shí)際上:原來(lái)學(xué)習(xí)的LinkedHashSet集合的底層原理就是LinkedHashMap。

package com.itheima.day08.teacher.map02;

import java.util.Objects;

/**
 * 學(xué)生類(lèi)
 */
public class Student {

    private String name;
    private int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    /**
     * 獲取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 設(shè)置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 獲取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 設(shè)置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    public String toString() {
        return "Student{name = " + name + ", age = " + age + "}";
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age && Objects.equals(name, student.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}



---------------
package com.itheima.day08.teacher.map02;

import java.util.HashMap;
import java.util.LinkedHashMap;

/**
 * LinkedHashMap測(cè)試類(lèi)
 */
public class LinkedHashMapDemo {

    public static void main(String[] args) {
        //創(chuàng)建一個(gè) 存儲(chǔ) 學(xué)生對(duì)象--籍貫對(duì)應(yīng) 關(guān)系的 集合
        LinkedHashMap<Student,String> map = new LinkedHashMap<>();
        //每次存一個(gè)學(xué)生對(duì)象--籍貫
        Student stu1 = new Student("小學(xué)", 15);
        Student stu2 = new Student("中學(xué)", 19);
        Student stu3 = new Student("高中", 22);
        Student stu4 = new Student("小學(xué)", 15);
        //stu1 來(lái)自 吉林  stu2 黑龍江  stu3 遼寧
        map.put(stu1,"吉林");
        map.put(stu2,"黑龍江");
        map.put(stu3,"遼寧");
        map.put(stu4,"熱河");//  map集合特點(diǎn)  鍵唯一
             // 沒(méi)有重寫(xiě) hashcode equals時(shí)候  兩次new 就是兩個(gè)不同的對(duì)象。
             // 我們會(huì)認(rèn)為 stu1 stu4 的 內(nèi)容一樣就是相同的對(duì)象---需要我們?nèi)ブ貙?xiě)鍵的hashCode equals方法

        map.forEach((k,v)->{
            System.out.println(k+"="+v);
        });
    }
}

4.?TreeMap集合

????????TreeMap集合的底層原理

? ? ? ? 1.TreeMap跟TreeSet集合的底層原理是一樣的,都是基于紅黑樹(shù)實(shí)現(xiàn)的排序。

? ? ? ? 2.TreeMap集合同樣也支持兩種方式來(lái)指定排序規(guī)則

????????????????讓類(lèi)實(shí)現(xiàn)Comparable接口,重寫(xiě)比較規(guī)則。

????????????????TreeMap集合有一個(gè)有參數(shù)構(gòu)造器,支持創(chuàng)建Comparator比較器對(duì)象,以便用來(lái)指定比較規(guī)則。? ? ?

package com.itheima.day08.teacher.map02;

import java.util.Objects;

/**
 * 學(xué)生類(lèi)
 */
public class Student {

    private String name;
    private int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    /**
     * 獲取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 設(shè)置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 獲取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 設(shè)置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    public String toString() {
        return "Student{name = " + name + ", age = " + age + "}";
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age && Objects.equals(name, student.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}



------------------
package com.itheima.day08.teacher.map02;

import java.util.Comparator;
import java.util.HashMap;
import java.util.TreeMap;

/**
 * TreeMap測(cè)試類(lèi)
 */
public class TreeMapDemo {

    public static void main(String[] args) {
        //創(chuàng)建一個(gè) 存儲(chǔ) 學(xué)生對(duì)象--籍貫對(duì)應(yīng) 關(guān)系的 集合
        TreeMap<Student,String> map = new TreeMap<>(new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                return o2.getAge()-o1.getAge();
            }
        });
        //每次存一個(gè)學(xué)生對(duì)象--籍貫
        Student stu1 = new Student("小學(xué)", 15);
        Student stu2 = new Student("中學(xué)", 19);
        Student stu3 = new Student("高中", 22);
        Student stu4 = new Student("小學(xué)", 15);
        //stu1 來(lái)自 吉林  stu2 黑龍江  stu3 遼寧
        map.put(stu1,"吉林");
        map.put(stu2,"黑龍江");
        map.put(stu3,"遼寧");
        map.put(stu4,"熱河");


        map.forEach((k,v)->{
            System.out.println(k+"="+v);
        });
    }
}

集合的嵌套:??指的是集合中的元素又是一個(gè)集合文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-833039.html

到了這里,關(guān)于Map集合體系(HashMap,LinkedHashMap,TreeMap)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Java學(xué)數(shù)據(jù)結(jié)構(gòu)(3)——樹(shù)Tree & B樹(shù) & 紅黑樹(shù) & Java標(biāo)準(zhǔn)庫(kù)中的集合Set與映射Map & 使用多個(gè)映射Map的案例

    Java學(xué)數(shù)據(jù)結(jié)構(gòu)(3)——樹(shù)Tree & B樹(shù) & 紅黑樹(shù) & Java標(biāo)準(zhǔn)庫(kù)中的集合Set與映射Map & 使用多個(gè)映射Map的案例

    1.B樹(shù),階M,數(shù)據(jù)樹(shù)葉上,根的兒子數(shù)在2和M之間,除根外,非樹(shù)葉節(jié)點(diǎn)兒子為M/2和M之間; 2.B樹(shù)的插入引起分裂,B樹(shù)的刪除,引起合并和領(lǐng)養(yǎng); 3.紅黑樹(shù),根是黑的,紅色節(jié)點(diǎn)的兒子必須是黑的,所有路徑的黑色節(jié)點(diǎn)數(shù)相同; 4.紅黑樹(shù)的插入,顏色翻轉(zhuǎn),單旋轉(zhuǎn),插入節(jié)點(diǎn)定

    2024年02月11日
    瀏覽(34)
  • Java----Hashmap,LinkedMap和TreeMap三者的區(qū)別

    Java----Hashmap,LinkedMap和TreeMap三者的區(qū)別

    ????????其中map表示的意思為“映射”,HashMap,LinkedMap和TreeMap這三中類(lèi)都是對(duì)Map接口的實(shí)現(xiàn)類(lèi),在數(shù)據(jù)插入方面,HashMap是無(wú)序插入,LinkedMap是有序插入,而TreeMap會(huì)根據(jù)鍵的值進(jìn)行排序后再進(jìn)行插入。在運(yùn)行方面,前兩個(gè)的運(yùn)行速度較快,針對(duì)Map對(duì)象的存儲(chǔ)會(huì)選擇前兩者,

    2024年02月13日
    瀏覽(23)
  • 【數(shù)據(jù)結(jié)構(gòu)與算法】C++的STL模板(迭代器iterator、容器vector、隊(duì)列queue、集合set、映射map)以及算法例題

    【數(shù)據(jù)結(jié)構(gòu)與算法】C++的STL模板(迭代器iterator、容器vector、隊(duì)列queue、集合set、映射map)以及算法例題

    更多算法例題鏈接: 【數(shù)據(jù)結(jié)構(gòu)與算法】遞推法和遞歸法解題(遞歸遞推算法典型例題) 什么是迭代器(iterator) 迭代器(iterator)的定義: 迭代器是一種檢查容器內(nèi)元素并遍歷元素的數(shù)據(jù)類(lèi)型。 迭代器提供對(duì)一個(gè)容器中的對(duì)象的訪問(wèn)方法,并且定義了容器中對(duì)象的范圍。 容器

    2024年04月14日
    瀏覽(31)
  • 【Java 數(shù)據(jù)結(jié)構(gòu)】TreeMap和TreeSet的介紹

    【Java 數(shù)據(jù)結(jié)構(gòu)】TreeMap和TreeSet的介紹

    目錄 1、認(rèn)識(shí) TreeMap 和 TreeSet 2、TreeMap 的主要成員變量 3、TreeMap 的主要構(gòu)造方法 4、TreeMap 和 TreeSet 的元素必須可比較 5、TreeMap 和 TreeSet 關(guān)于 key 有序? 6、TreeMap 和 TreeSet 的關(guān)系? 7、總結(jié) TreeMap 和 TreeSet 是Java中利用搜索樹(shù)實(shí)現(xiàn)的 Map 和 Set,它們的底層是紅黑樹(shù),而紅黑樹(shù)是一

    2024年01月20日
    瀏覽(22)
  • 從零開(kāi)始學(xué)習(xí) Java:簡(jiǎn)單易懂的入門(mén)指南之HashMap及TreeMap源碼解讀(二十四)

    Tip: 1.TreeMap添加元素的時(shí)候,鍵是否需要重寫(xiě)hashCode和equals方法? 此時(shí)是不需要重寫(xiě)的。 2.HashMap是哈希表結(jié)構(gòu)的,JDK8開(kāi)始由數(shù)組,鏈表,紅黑樹(shù)組成的。既然有紅黑樹(shù),HashMap的鍵是否需要實(shí)現(xiàn)Compareable接口或者傳遞比較器對(duì)象呢? 不需要的。 因?yàn)樵贖ashMap的底層,默認(rèn)是利用

    2024年02月07日
    瀏覽(17)
  • java集合之LinkedHashMap

    java集合之LinkedHashMap

    之前的文章,我們對(duì)HashMap進(jìn)行了講解。在之前的文章,我們了解到,HashMap是唯一且無(wú)序的。然而LinkedHashMap是有序的,并且也是唯一的。那這個(gè)是怎么實(shí)現(xiàn)有序的呢,接下來(lái)我們將慢慢講述。 linkedHashMap的常用方法和hashmap的常用方法基本一致。都是put添加元素,remove移除元素

    2024年02月17日
    瀏覽(28)
  • 【數(shù)據(jù)類(lèi)型】Collections.synchronizedMap 多線程Map,與HashMap的不同

    Collections.synchronizedMap 是 Java 中提供的工具方法,用于創(chuàng)建一個(gè)同步(線程安全)的 Map。 它接受一個(gè)現(xiàn)有的 Map 對(duì)象,并返回一個(gè)通過(guò)同步包裝后的 Map 。 下面是一個(gè)簡(jiǎn)單的示例: 1、基礎(chǔ)原理 Collections.synchronizedMap 是通過(guò)返回一個(gè)線程安全的 Map 包裝器來(lái)實(shí)現(xiàn)的,它在對(duì) Map

    2024年01月18日
    瀏覽(17)
  • 《HashMap的數(shù)據(jù)結(jié)構(gòu)》

    《HashMap的數(shù)據(jù)結(jié)構(gòu)》

    目錄 HashMap概述: ?數(shù)據(jù)結(jié)構(gòu)的組成: 一個(gè)鍵值對(duì)是如何存入該結(jié)構(gòu)中: HashMap中鏈表和紅黑樹(shù)的用途和轉(zhuǎn)換方式?: ? ???????? ? ? ? ? ?HashMap是基于哈希表的Map接口實(shí)現(xiàn)的,它存儲(chǔ)的內(nèi)容是鍵值對(duì)key,value映射。 該類(lèi)無(wú)序。 ? ? ? ? 在JDK1.7及以前,HashMap的數(shù)據(jù)結(jié)構(gòu)是有

    2024年02月07日
    瀏覽(24)
  • HashMap的數(shù)據(jù)結(jié)構(gòu)

    HashMap基于哈希表的Map接口實(shí)現(xiàn),是以key-value存儲(chǔ)形式存在,即主要用來(lái)存放鍵值對(duì)。HashMap的實(shí)現(xiàn)不是同步的,這意味著它不是線程安全的。它的key、value都可以為null。此外,HashMap中的映射不是有序的。 JDK1.8之前的HashMap由數(shù)組+鏈表組成的,數(shù)組是HashMap的主體,鏈表則是主要

    2024年02月07日
    瀏覽(32)
  • 【Java練習(xí)題匯總】《第一行代碼JAVA》網(wǎng)絡(luò)編程篇&集合體系篇&JDBC篇,匯總Java練習(xí)題——Socket 與ServerSocket、List和Set、Map~

    【Java練習(xí)題匯總】《第一行代碼JAVA》網(wǎng)絡(luò)編程篇&集合體系篇&JDBC篇,匯總Java練習(xí)題——Socket 與ServerSocket、List和Set、Map~

    一、填空題 在類(lèi)集中存放單值的最大父接口是___________ ,存放一對(duì)值的最大父接口是___________ 。 ___________ 接口保存的數(shù)據(jù)是不允許重復(fù)的,并且___________ 子類(lèi)是可以排序的,根據(jù)___________ 排序。 Java 類(lèi)集可以使用的輸出方式是___________ 、___________ 、___________ 和___________ 。 在

    2024年02月13日
    瀏覽(28)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包