国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

java://Comparator、Comparable的用法(按照要求將map集合的鍵值對進行順序輸出)

2019-11-15 01:04:09
字體:
來源:轉載
供稿:網友
java://Comparator、Comparable的用法(按照要求將map集合的鍵值對進行順序輸出)

import java.util.*;

public class Person implements Comparable<Person>//使Person的屬性具有比較性

{

PRivate String name;

private int age;

public Person(String name,int age)//初始化構造函數

{

this.name = name;

this.age = age;

}

public void set(String name,int age)//重新設置姓名和年齡

{

this.name = name;

this.age = age;

}

public String getName()//獲取姓名

{

return name;

}

public int getAge()//獲取年齡

{

return age;

}

public String toString()//將姓名和年齡以字符串的形式返回

{

returnname+","+age;

}

//出現重名時,再找到另一個hash地址用來存儲數據(底層自動調用)

publicinthashCode()

{

returnname.hashCode()+age*34;

}

//判斷接受的類是不是Person類,不是就拋出異常(底層自動調用)

publicbooleanequals(Object obj)

{

if(!(objinstanceofPerson))

thrownew ClassCastException("不是Person類");

Person p = (Person)obj;

returnthis.name.equals(p.name) &&this.age==p.age;

}

public int compareTo(Person p)//(按照自己的要求去作比較)

{

int num=new Integer(this.age).compareTo(p.age);

return num==0?this.name.compareTo(p.name):num;

}

}

public class Test

{

public static <T>void sop(T t)

{

System.out.println(t);

}

public static void main(String args[]) throws Exception

{

//創建一個map集合,用來存儲數據 <>表示接收的是泛型,即指定的類型

TreeMap<Person,String> map = new TreeMap<Person,String>(/*new Mycompare()*/);

//往集合添加數據

map.put(new Person("czhangsan1",11),"beijing");

map.put(newPerson("zhangsan5",15),"nanjing");

map.put(newPerson("azhangsan5",10),"shanghai");

map.put(newPerson("zhangsan2",20),"haierbing");

map.put(newPerson("bzhangsan2",20),"beijing");

map.put(newPerson("zhangsan3",12),"shanghai");

map.put(newPerson("zhangsan4",19),"changchun");

map.put(newPerson("zhangsan4",10),"changchun");

map.put(new Person("zhangsan4",10),"zhengzhou");

//將map集合轉換為set集合,因為map集合沒有迭代器 ,而set集合有

Set<Map.Entry<Person,String>> entryset = map.entrySet();

//獲取迭代器

Iterator<Map.Entry<Person,String>> it = entryset.iterator();

//用迭代器取數據

while(it.hasNext())

{

Map.Entry<Person,String> m = it.next();

Person key = m.getKey();//取出鍵

String value =m.getValue();//取出值

sop(key+"......."+"adress:"+value);//打印鍵和值

}

}

}

class Mycompare implements comparator<Perosn>//自定義一個比較器

{

public int compare(Person p1,Person p2)

{

int num = p1.getName().compareTo(p2.getName());

return num==0?new Integer(p1.getAge()).compareTo(new Integer(p2.getAge())):num;

}

}

//注意:上面的兩種形式都實現了比較,任選其中一種就可以。要么實現comparable接口;要么在集合中傳入自定義的比較器。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 铜鼓县| 周宁县| 扬州市| 龙南县| 高邑县| 阿巴嘎旗| 栾川县| 平顺县| 柞水县| 仁布县| 娱乐| 南昌市| 饶平县| 新源县| 扬中市| 翁牛特旗| 兴安盟| 克拉玛依市| 天津市| 都安| 浑源县| 正宁县| 建瓯市| 阿巴嘎旗| 华亭县| 栾川县| 定西市| 远安县| 平谷区| 阳曲县| 岗巴县| 玛曲县| 榆林市| 三河市| 安图县| 沁源县| 新化县| 沽源县| 渝北区| 电白县| 大埔区|