TreeMap集合的使用方法【案例演示】

HashMap集合存储的元素的键值是无序且不可重复的,为了对集合中的元素的键值进行排序,Map接口提供了另一个可以对集合中元素键值进行排序的类TreeMap。下面通过一个案例演示TreeMap集合的用法,如文件6-19所示。

文件6-19 Example19.java

importjava.util.Iterator;Import java.util.Set;importjava.util.TreeMap;publicstaticvoidmain(String[] args)TreeMap map=newTreeMapC;// 创建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的打印结果可以看出,添加的元素已经自动排序,并且键值重复存人的整数3只有一个,只是后边添加的值“张三”覆盖了原来的值“李四”。这也证实了TreeMap中的键必须是唯一的,不能重复且有序,如果存储了相同的键,后存储的值会覆盖原有的值。

TreeMap集合之所以可以对添加的元素的键值进行排序,其实现同TreeSet一样,TreeMap的排序也分为自然排序和比较排序两种。下面通过一个案例演示比较排序法实现按键值排序,在该案例中,键是自定义的String类,如文件6-20所示。

文件6-20 Example20.java

importjava.util.*;classStudent{privateString name;privateint age;publicString getName(){return name;}publicvoidsetName(String name)this.name = name;publicintgetAge(){return age;publicvoidsetAge(int age){this.age = age;publicStudent(String name,int age){super();this.name = name;}@OverridepublicStringtoString(){return"student (name"+name+”,age"+age+”);publicclassExample20{publicstaticvoidmain(String{} args){TreeMap tm=newTreeMap(newComparator@Override
publile intcompare(student s1,Student s2){int num = sl.getName().compareTo(s2.getName();//按照姓名比较return num ==0? num:s1.getAges2.getAge();}});
tm.put(newStudent("张三",23),"北京");
tm.put(newStudent("李四",13),"上海");
tm.put(newStudent("赵六",43),"深圳");
tm.put(newStudent("王五", 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所示。

图6-27文件6-19的运行结果 图6-28文件6-20的运行结果

在文件6-20中,第2~26行代码定义了一个Student类;第29~35行代码定义了一个TreeMap集合,并在该集合中通过匿名内部类的方式实现了Comparator 接口,然后重写了compare( )方法,在compare( )方法中通过三目运算符自定义了排序方式为先按照年龄排序,年龄相同再按照姓名排序;第36~46行代码通过Map的put(Object key, Object value)方法向集合中加入4个键为Student对象、值为String类型的元素,年使用迭代器将集合中的元素打印输出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值