教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

TreeMap集合實現(xiàn)按鍵值排序

更新時間:2021年10月08日15時54分 來源:傳智教育 瀏覽次數(shù):

好口碑IT培訓

HashMap集合存儲的元素的鍵值是無序且不可重復的,為了對集合中的元素的鍵值進行排序,Map接口提供了另一個可以對集合中元素鍵值進行排序的類TreeMap。下面通過一個案例演示TreeMap集合的用法,如文件6-19所示。
文件6-19 Example19.java

import java.util.Iterator;
Import java.util.Set;
import java.util.TreeMap;
public static void main (String[] args)
TreeMap map=new TreeMapC; // 創(chuàng)建Map集合
map.put (3,”李四”);//仔儲鍵和值
map.put (2,”王五”);
map.put (4,”趙六”);
map.put (3,”張三”);
Set keySet=map.keySet( );
while(it.hasNext() ){
Object key = it.next ( );
Object value = map.get(key) ; //獲取每個鍵所對應的值
System.out.println(key+":"+value);

文件6-19的運行結果如圖6-27所示。

在文件6-19中,第6~10行代碼通過Mapput(Object key,Object value)方法向集合中加入4個元素;第11~17行代碼使用迭代器遍歷集合中的元素并通過元素的鍵獲取對應的值,然后打印。從圖6-27的打印結果可以看出,添加的元素已經(jīng)自動排序,并且鍵值重復存人的整數(shù)3只有一個,只是后邊添加的值“張三”覆蓋了原來的值“李四”。這也證實了TreeMap中的鍵必須是唯一的,不能重復且有序,如果存儲了相同的鍵,后存儲的值會覆蓋原有的值。

TreeMap集合之所以可以對添加的元素的鍵值進行排序,其實現(xiàn)同TreeSet一樣,TreeMap的排序也分為自然排序和比較排序兩種。下面通過一個案例演示比較排序法實現(xiàn)按鍵值排序,在該案例中,鍵是自定義的String類,如文件6-20所示。

文件6-20 Example20.java

import java.util.*;
class Student{
private String name;
private int 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;
public Student (String name, int age) {
super ( );
this.name = name;
}
@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
@Override
publile int compare (student s1, Student s2){
int num = sl.getName( ).compareTo(s2.getName();//按照姓名比較
return num == 0 ? num:s1.getAges2.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);

文件6-20的運行結果如圖6-28所示。

1633679334732_比較排序法實現(xiàn)按鍵值排序運行結果.jpg

                                                                                                                    圖6-27文件6-19的運行結果                                        圖6-28文件6-20的運行結果

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

猜你喜歡:

Hashmap與Hashtable有什么區(qū)別?【Java面試題】

TreeMap數(shù)據(jù)結構視頻教程【java進階】

Mapper類中的map()方法怎么用?

Java培訓之java難點解析(二十四)-Map集合

傳智教育java培訓班

0 分享到:
和我們在線交談!