博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TreeMap 底层是红黑树 排序是根据key值进行的 添加元素时异常 Comparable异常 Comparator比较自定义对象放在键的位置...
阅读量:5980 次
发布时间:2019-06-20

本文共 3917 字,大约阅读时间需要 13 分钟。

package com.swift;import java.util.Comparator;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;import java.util.Set;import java.util.TreeMap;public class Map_keySet_entrySet {    public static void main(String[] args) {        /*         * TreeMap 集合存储自定义对象,并使用 2 中方式遍历获取         */                Map
hm = new HashMap
(); hm.put(new Person("lisi",18), "加拿大"); hm.put(new Person("zhangsa",17), "澳大利亚"); hm.put(new Person("zhangsa",17), "澳大利亚"); hm.put(new Person("wangwu",20), "新加坡"); hm.put(new Person("zhaoliu",19), "新西兰"); hm.put(new Person("zhaoliu",19), "新西兰"); hm.put(new Person("lisa",22), "迪拜"); //使用TreeMap无法排序比较是会出现Comparable错误 这时需要自己弄比较器 Map
tree = new TreeMap
(new Comparator
() { @Override public int compare(Person arg0, Person arg1) { int num=arg0.getAge()-arg1.getAge(); return num==0?arg0.getName().compareTo(arg1.getName()):num; } }); tree.put(new Person("lisisi",18), "china"); //keySet方法一 Set
set=hm.keySet(); for(Person per:set) { System.out.println("人员:"+per.toString()+"来自:"+hm.get(per)); } Set
set1=tree.keySet(); for(Person per:set1) { System.out.println("人员:"+per.toString()+"来自:"+tree.get(per)); } //entrySet方法二 for(Map.Entry
en:hm.entrySet()) { System.out.println(); System.out.println("人员:"+en.getKey().toString()+"来自:"+en.getValue()); } Map
tree1 = new TreeMap
(new Comparator
() { @Override public int compare(Person arg0, Person arg1) { int num=arg0.getAge()-arg1.getAge(); return num==0?arg0.getName().compareTo(arg1.getName()):num; } }); tree1.put(new Person("fengqichanglin",18), "langyabang"); System.out.println(); Iterator
it=tree1.entrySet().iterator(); while(it.hasNext()) { Entry
entry=(Entry
) it.next(); System.out.println(entry.getKey().toString()+entry.getValue()); } }}

 


 

package sortmap_demo;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;import java.util.Map;import java.util.Map.Entry;import java.util.Set;import java.util.TreeMap;public class CollectionsSort {    public static void main(String[] args) {        Map
map=new TreeMap
(); map.put(1,new User("张三",28)); map.put(2,new User("李四",29)); map.put(3,new User("王五",30)); map.put(4,new User("赵六",31)); Set
> set = map.entrySet(); List
> list = new ArrayList
>(set); Collections.sort(list,new Comparator
>() { @Override public int compare(Entry
o1, Entry
o2) { return o2.getValue().getAge()-o1.getValue().getAge(); } }); for (Entry
u : list) { System.out.println(u.getKey()+"--"+u.getValue()); }}}

不颠倒key和value的位置,用list集合api排序的方法

TreeMap根据key的Comparator对象排序方法

package sortmap_demo;import java.util.Comparator;import java.util.Map;import java.util.TreeMap;public class HashMapDemo {    public static void main(String[] args) {        Map
map=new TreeMap
(new Comparator
() { @Override public int compare(User o1, User o2) { if(o1.getAge()>o2.getAge()){ return -1; }else if(o1.getAge()==o2.getAge()){ return 0; }else{ return 1; } } }); map.put(new User("张三",28),1); map.put(new User("李四",29),2); map.put(new User("王五",30),3); map.put(new User("赵六",31),4); for (User u : map.keySet()) { System.out.println(u+"--"+map.get(u)); }}}

 

转载于:https://www.cnblogs.com/qingyundian/p/8321627.html

你可能感兴趣的文章
javascript 操作DOM元素样式
查看>>
HBase 笔记3
查看>>
【Linux】Linux 在线安装yum
查看>>
Atom 编辑器系列视频课程
查看>>
[原][osgearth]osgearthviewer读取earth文件,代码解析(earth文件读取的一帧)
查看>>
mybatis update返回值的意义
查看>>
expdp 详解及实例
查看>>
通过IP判断登录地址
查看>>
深入浅出JavaScript (五) 详解Document.write()方法
查看>>
Beta冲刺——day6
查看>>
在一个程序中调用另一个程序并且传输数据到选择屏幕执行这个程序
查看>>
代码生成工具Database2Sharp中增加视图的代码生成以及主从表界面生成功能
查看>>
关于在VS2005中编写DLL遇到 C4251 警告的解决办法
查看>>
提高信息安全意识对网络勒索病毒说不
查看>>
我的友情链接
查看>>
IDE---Python IDE之Eric5在window下的安装
查看>>
Mybatis调用Oracle中的存储过程和function
查看>>
基本安装lnmp环境
查看>>
yum源资料汇总
查看>>
7、MTC与MTV,http请求介绍
查看>>