Map 排序
2015-12-14 11:16
155 查看
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp42
[size=12px;][size=12px;][size=12px;]Map的排序常分为两种情况,1、按[/size]key[size=12px;]值排序;2、按value排序[/size][/size][/size]
[size=12px; font-family: 宋体;] 1.[size=12px; font-family: 宋体;]我们先讨论按[/size]key[size=12px; font-family: 宋体;]值进行排序[/size]
[size=12px; font-family: 宋体;]我们先看一下这个[/size]Sorter[size=12px; font-family: 宋体;]类:[/size][/size]
[size=12px; font-family: 宋体;] public static Map sort(Map map) {
Map mapVK = new TreeMap(
new Comparator() {
public int compare(Object obj1, Object obj2) {
String v1 = (String)obj1;
String v2 = (String)obj2;
int s = v2.compareTo(v1);
return s;
}
}
);[/size]
[size=12px; font-family: 宋体;] Set col = map.keySet();
Iterator iter = col.iterator();
while (iter.hasNext()) {
String key = (String) iter.next();
Integer value = (Integer) map.get(key);
mapVK.put(key, value);
}
return mapVK;
}
}[/size]
public class SortHashMap {
[size=12px; font-family: 宋体;] }[/size]
[size=12px; font-family: 宋体;] public static void main(String[] args) {
Map maps = new HashMap();
maps.put("boy",
;
maps.put("cat", 7);
maps.put("dog", 1);
maps.put("apple", 5);
//排序前的输出[/size]
Set set = maps.entrySet();
Iterator i = set.iterator();
while(i.hasNext()){
Map.Entry entry1=(Map.Entry)i.next();
System.out.println(entry1.getKey() + "-------->" + entry1.getValue());
}
[size=12px; font-family: 宋体;] System.out.println("----------------");
//排序后的输出[/size]
Map sortMaps = Sorter.sort(maps);
Set sortSet = sortMaps.entrySet();
Iterator ii = sortSet.iterator();
while(ii.hasNext()){
Map.Entry entry1=(Map.Entry)ii.next();
System.out.println(entry1.getKey() + "-------->" + entry1.getValue());
}
}
}
cat-------->7
apple-------->5
dog-------->1
boy-------->8
dog-------->1
cat-------->7
boy-------->8
apple-------->5
经过排序后的Map有序了,是按照字母的逆序排列的。
还是上面的那个例子,我们想要按照各类对象的数量打印出类别的名称。
我们再来修改一下这个SortHashMap类:
[size=12px; font-family: 宋体;] public SortHashMap() {[/size]
[size=12px; font-family: 宋体;] public static void main(String[] args) {
Map maps = new HashMap();
maps.put("boy",
;
maps.put("cat", 7);
maps.put("dog", 1);
maps.put("apple", 5);
//排序前的输出[/size]
Set set = maps.entrySet();
Iterator i = set.iterator();
while(i.hasNext()){
Map.Entry entry1=(Map.Entry)i.next();
System.out.println(entry1.getKey() + "-------->" + entry1.getValue());
}
[size=12px; font-family: 宋体;] System.out.println("----------------");
//排序后的输出[/size]
List> info = new ArrayList>(maps.entrySet());
Collections.sort(info, new Comparator>() {
public int compare(Map.Entry obj1, Map.Entry obj2) {
return obj2.getValue() - obj1.getValue();
}
});
[size=12px; font-family: 宋体;] for (int j = 0; j" + info.get(j).getValue());
}
}
}[/size]
cat-------->7
apple-------->5
dog-------->1
boy-------->8
boy------->8
cat------->7
apple------->5
dog------->1
[size=12px;][size=12px;][size=12px;]Map的排序常分为两种情况,1、按[/size]key[size=12px;]值排序;2、按value排序[/size][/size][/size]
[size=12px; font-family: 宋体;] 1.[size=12px; font-family: 宋体;]我们先讨论按[/size]key[size=12px; font-family: 宋体;]值进行排序[/size]
[size=12px; font-family: 宋体;]我们先看一下这个[/size]Sorter[size=12px; font-family: 宋体;]类:[/size][/size]
[size=12px; font-family: 宋体;] public static Map sort(Map map) {
Map mapVK = new TreeMap(
new Comparator() {
public int compare(Object obj1, Object obj2) {
String v1 = (String)obj1;
String v2 = (String)obj2;
int s = v2.compareTo(v1);
return s;
}
}
);[/size]
[size=12px; font-family: 宋体;] Set col = map.keySet();
Iterator iter = col.iterator();
while (iter.hasNext()) {
String key = (String) iter.next();
Integer value = (Integer) map.get(key);
mapVK.put(key, value);
}
return mapVK;
}
}[/size]
public class SortHashMap {
[size=12px; font-family: 宋体;] }[/size]
[size=12px; font-family: 宋体;] public static void main(String[] args) {
Map maps = new HashMap();
maps.put("boy",
;
maps.put("cat", 7);
maps.put("dog", 1);
maps.put("apple", 5);
//排序前的输出[/size]
Set set = maps.entrySet();
Iterator i = set.iterator();
while(i.hasNext()){
Map.Entry entry1=(Map.Entry)i.next();
System.out.println(entry1.getKey() + "-------->" + entry1.getValue());
}
[size=12px; font-family: 宋体;] System.out.println("----------------");
//排序后的输出[/size]
Map sortMaps = Sorter.sort(maps);
Set sortSet = sortMaps.entrySet();
Iterator ii = sortSet.iterator();
while(ii.hasNext()){
Map.Entry entry1=(Map.Entry)ii.next();
System.out.println(entry1.getKey() + "-------->" + entry1.getValue());
}
}
}
cat-------->7
apple-------->5
dog-------->1
boy-------->8
dog-------->1
cat-------->7
boy-------->8
apple-------->5
经过排序后的Map有序了,是按照字母的逆序排列的。
还是上面的那个例子,我们想要按照各类对象的数量打印出类别的名称。
我们再来修改一下这个SortHashMap类:
[size=12px; font-family: 宋体;] public SortHashMap() {[/size]
[size=12px; font-family: 宋体;] public static void main(String[] args) {
Map maps = new HashMap();
maps.put("boy",
;
maps.put("cat", 7);
maps.put("dog", 1);
maps.put("apple", 5);
//排序前的输出[/size]
Set set = maps.entrySet();
Iterator i = set.iterator();
while(i.hasNext()){
Map.Entry entry1=(Map.Entry)i.next();
System.out.println(entry1.getKey() + "-------->" + entry1.getValue());
}
[size=12px; font-family: 宋体;] System.out.println("----------------");
//排序后的输出[/size]
List> info = new ArrayList>(maps.entrySet());
Collections.sort(info, new Comparator>() {
public int compare(Map.Entry obj1, Map.Entry obj2) {
return obj2.getValue() - obj1.getValue();
}
});
[size=12px; font-family: 宋体;] for (int j = 0; j" + info.get(j).getValue());
}
}
}[/size]
cat-------->7
apple-------->5
dog-------->1
boy-------->8
boy------->8
cat------->7
apple------->5
dog------->1
相关文章推荐
- 【转】Java虚拟机的JVM垃圾回收机制
- 探索 Java 热部署
- 理解oracle中连接和会话
- Oracle 的process和Session
- 数据库事务以及事务的隔离级别
- Arrays和Collections 对于sort的不同实现原理
- sql执行机制
- 对象拷贝类PropertyUtils,BeanUtils,BeanCopier的技术沉淀
- Ibatis XML 配置文件注释引起错误及解决方案
- Spring中ApplicationContext加载机制
- iOS开发网络数据之AFNetworking使用
- Spring定时任务quartz表达式
- 单线程你别阻塞,Redis时延问题分析及应对
- excel(2015)表格如何在滑动时固定标题栏
- 用JS控制CSS基本样式
- jQuery中getJSON跨域原理详解
- HTML转义字符串
- java线程:Atomic(原子的)
- 九度oj-1370-数组中出现次数超过一半的数字
- 魅族手机中屏蔽ListView下拉悬停方法