国产另类ts人妖一区二区_欧美肥老太做爰视频_快穿高h肉_国产欧美综合在线

當前位置: 首頁 / 技術干貨 / 正文
TreeMap集合

2022-12-22

排序 treemap 集合 student map

  TreeMap集合

  HashMap集合存儲的元素的鍵值是無序的和不可重復的,為了對集合中的元素的鍵值進行排序,Map接口提供了另一個可以對集合中元素鍵值進行排序的類TreeMap。

  接下來通過一個案例演示TreeMap集合的用法。 

Java
import java.util.Iterator;
import java.util.Set;
import java.util.TreeMap;

public class Example19 {
    public static void main(String[] args) {
        TreeMap map = new TreeMap(); // 創建Map集合
        map.put(2. "趙六"); // 存儲鍵和值
        map.put(1. "張三");
        map.put(3. "王五");
        map.put(2. "李四");
        Set keySet = map.keySet();
        Iterator it = keySet.iterator();
        while (it.hasNext()) {
            Object key = it.next();
            Object value = map.get(key); // 獲取每個鍵所對應的值
            System.out.println(key + ":" + value);
        }
    }
}

  從運行結果可以看出,添加的元素已經自動排序,并且鍵值重復存入的整數2只有一個,只是后邊添加的值“李四”覆蓋了原來的值“趙六”。這也證實了TreeMap中的鍵必須是唯一的,不能重復并且有序,如果存儲了相同的鍵,后存儲的值則會覆蓋原有的值。

  TreeMap集合之所以可以對添加的元素的鍵值進行排序,其實現同TreeSet一樣,TreeMap的排序也分自然排序與比較排序兩種。接下來通過一個案例演示比較排序法實現按鍵值排序,在該案例中,鍵是自定義的String類。 

Java
import java.util.Comparator;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeMap;

class Student {
    private String name;
    private int age;

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

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }

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

public class Example20 {
    public static void main(String[] args) {
        TreeMap tm = new TreeMap(new Comparator<Student>() {
            @Override
            public int compare(Student s1. Student s2) {
                int num = s1.getName().compareTo(s2.getName()); // 按照姓名比較
                return num == 0 ? num : s1.getAge() - s2.getAge();
            }
        });
        tm.put(new Student("張三", 23), "北京");
        tm.put(new Student("李四", 13), "上海");
        tm.put(new Student("趙六", 43), "深圳");
        tm.put(new Student("王五", 33), "廣州");
        Set keySet = tm.keySet();
        Iterator it = keySet.iterator();
        while (it.hasNext()) {
            Object key = it.next();
            Object value = tm.get(key); // 獲取每個鍵所對應的值
            System.out.println(key + ":" + value);
        }
    }
}

  上述代碼中,定義了一個TreeMap集合,并在該集合中通過匿名內部類的方式實現了Comparator接口,然后重寫了compare()方法,在compare()方法中通過三目運算符的方式自定義了排序方式為先按照年齡排序,年齡相同再按照姓名排序。然后通過Map的put(Object key, Object value)方法向集合中加入4個鍵為Student對象、值為String類型的元素,并使用迭代器將集合中元素進行打印輸出。

分享: 更多

上一篇:Map接口與HashMap集合

下一篇:Properties集合

好程序員公眾號

  • · 剖析行業發展趨勢
  • · 匯聚企業項目源碼

好程序員開班動態

More+
  • HTML5大前端 <高端班>

    開班時間:2021-04-12(深圳)

    開班盛況

    開班時間:2021-05-17(北京)

    開班盛況
  • 大數據+人工智能 <高端班>

    開班時間:2021-03-22(杭州)

    開班盛況

    開班時間:2021-04-26(北京)

    開班盛況
  • JavaEE分布式開發 <高端班>

    開班時間:2021-05-10(北京)

    開班盛況

    開班時間:2021-02-22(北京)

    開班盛況
  • Python人工智能+數據分析 <高端班>

    開班時間:2021-07-12(北京)

    預約報名

    開班時間:2020-09-21(上海)

    開班盛況
  • 云計算開發 <高端班>

    開班時間:2021-07-12(北京)

    預約報名

    開班時間:2019-07-22(北京)

    開班盛況
IT培訓IT培訓
在線咨詢
IT培訓IT培訓
試聽
IT培訓IT培訓
入學教程
IT培訓IT培訓
立即報名
IT培訓

Copyright 2011-2023 北京千鋒互聯科技有限公司 .All Right 京ICP備12003911號-5 京公網安備 11010802035720號