隔着超薄肉丝进入小说_男女刺激性视频大片_女教师的诱波多野结衣_一级欧美过瘾大片

當(dāng)前位置: 首頁 / 技術(shù)干貨 / 正文
TreeMap集合

2022-12-22

排序 treemap 集合 student map

  TreeMap集合

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

  接下來通過一個(gè)案例演示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(); // 創(chuàng)建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); // 獲取每個(gè)鍵所對應(yīng)的值
            System.out.println(key + ":" + value);
        }
    }
}

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

  TreeMap集合之所以可以對添加的元素的鍵值進(jìn)行排序,其實(shí)現(xiàn)同TreeSet一樣,TreeMap的排序也分自然排序與比較排序兩種。接下來通過一個(gè)案例演示比較排序法實(shí)現(xiàn)按鍵值排序,在該案例中,鍵是自定義的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); // 獲取每個(gè)鍵所對應(yīng)的值
            System.out.println(key + ":" + value);
        }
    }
}

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

分享: 更多

上一篇:Map接口與HashMap集合

下一篇:Properties集合

好程序員公眾號

  • · 剖析行業(yè)發(fā)展趨勢
  • · 匯聚企業(yè)項(xiàng)目源碼

好程序員開班動態(tài)

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

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

    開班盛況

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

    開班盛況
  • 大數(shù)據(jù)+人工智能 <高端班>

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

    開班盛況

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

    開班盛況
  • JavaEE分布式開發(fā) <高端班>

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

    開班盛況

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

    開班盛況
  • Python人工智能+數(shù)據(jù)分析 <高端班>

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

    預(yù)約報(bào)名

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

    開班盛況
  • 云計(jì)算開發(fā) <高端班>

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

    預(yù)約報(bào)名

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

    開班盛況
IT培訓(xùn)IT培訓(xùn)
在線咨詢
IT培訓(xùn)IT培訓(xùn)
試聽
IT培訓(xùn)IT培訓(xùn)
入學(xué)教程
IT培訓(xùn)IT培訓(xùn)
立即報(bào)名
IT培訓(xùn)

Copyright 2011-2023 北京千鋒互聯(lián)科技有限公司 .All Right 京ICP備12003911號-5 京公網(wǎng)安備 11010802035720號