Java中HashMap中对value对象进行排序
来源:互联网 发布:网络推手汇航 编辑:程序博客网 时间:2024/06/05 02:06
我们知道HashMap有key值与value值,在某些时候我们Java中有些业务需要对HashMap的value进行排序,当你的value是一个对象;而你需要按照对象的某一个属性对HashMap进行排序时候,我们不得不进行相关操作,所以我写了一个小例子,解决这种问题,这也是我工作中遇到的问题。下面从代码解说:
一、创建一个对象必须继承Comparable
package cn.gdin.test;
public class CaptureBean implements Comparable<CaptureBean>{
private String url;
private long dt;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public long getDt() {
return dt;
}
public void setDt(long dt) {
this.dt = dt;
}
@Override
public int compareTo(CaptureBean another) {
return (int) (this.dt-another.dt); //对于你要比较的属性值进行对比,请注意返回负值与正值的含义。
}
}
二、主工程例子
package cn.gdin.test;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class Test {
private static Map<Integer, CaptureBean> mCaptureUrlsO2O = new HashMap<Integer, CaptureBean>();//实例一个对象
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建三个要排序的对象
CaptureBean o1 = new CaptureBean();
o1.setDt(100004);
o1.setUrl("o1");
CaptureBean o2 = new CaptureBean();
o2.setDt(100002);
o2.setUrl("o2");
CaptureBean o3 = new CaptureBean();
o3.setDt(100003);
o3.setUrl("o3");
mCaptureUrlsO2O.put(1, o1);
mCaptureUrlsO2O.put(2, o2);
mCaptureUrlsO2O.put(3, o3);
Collection<CaptureBean> values=mCaptureUrlsO2O.values();
List<CaptureBean> list=new ArrayList<CaptureBean>(values);
Collections.sort(list);//对列表进行排序
Iterator iterator = mCaptureUrlsO2O.keySet().iterator();
System.out.println("change before");
while (iterator.hasNext()) {//输出原来的排序
System.out.println( mCaptureUrlsO2O.get(iterator.next()).getUrl());
}
Iterator iteratorAfter = mCaptureUrlsO2O.keySet().iterator();
int j=0;
System.out.println("change after");
while (iteratorAfter.hasNext()) {
int k =(Integer) iteratorAfter.next();
mCaptureUrlsO2O.put(k,list.get(j) );//替换原来的排序
System.out.println( mCaptureUrlsO2O.get(k).getUrl());
j++;
}
}
}
三、控制台输出结果:
change before
o1
o2
o3
change after
o2
o3
o1
四、总结
对于里面的集合类的运用不多说,这里只是提供方案,关于知识点需要自己归纳!希望对你有所帮助,也许这不是最佳方案,谢谢!
- Java中HashMap中对value对象进行排序
- java中对HashMap中的value进行排序
- hashmap中按value进行排序
- java中根据value对key进行排序
- java对HashMap中的key或者value值进行排序!
- java对HashMap中的key或者value值进行排序!
- java对HashMap中的key或者value值进行排序
- 对hashMap中的value进行排序
- 对hashMap中的value进行排序
- (java)根据map中value进行排序
- java对map中value的排序
- Java HashMap按value进行排序
- Java 根据 HashMap 的 value 进行排序
- 在Java中对集合当中的对象进行排序
- 在Java中对集合当中的对象进行排序
- 对Java的HashMap根据Value排序
- JAVA:对HashMap按value排序
- 关于Map类型中对value进行排序的问题
- C++本质:类的赋值运算符=的重载,以及深拷贝和浅拷贝
- 【华为OJ19】简单错误记录
- BZOJ 1935
- mysql 自定义hash索引
- MapReduce 例子
- Java中HashMap中对value对象进行排序
- iOS推送
- LXH必备技能
- Postfix expressions(Data Structure)
- 用c语言验证哥德巴赫猜想
- webpagetest网站性能分析
- leetCode练习(34)
- info of me
- 个人开发的独立小游戏《贪吃的猫》终于在应用宝上架了