- 浏览: 546164 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
wa114d:
楼主工作几年了,好厉害
一个面试官对面试问题的分析 -
wobuxiaole:
Good,非常好
30岁前男人需要完成的事 -
小逗逗:
Good,非常好
30岁前男人需要完成的事 -
invincibleLiu:
好帖,要顶!(别投我隐藏啊,这是对BBS最原始一种支持)
Java:synchronized修饰符在静态方法与非静态方法上的区别 -
fayedShih:
第三题,不知道对不对
import java.util.con ...
企业牛逼面试题目 高手进来讨论答题
import java.util.Comparator; import java.util.Iterator; import java.util.Map; import java.util.TreeMap; public class MapSort { private Map<Object, Number> map; private TreeMap<Object, Number> sortedMap; private TreeMap<Object, Number> descSortedMap; public MapSort(Map<Object, Number> map) { this.map = map; this.sortedMap = sortedMap(); this.descSortedMap = descSortedMap(); } public Object[] getSortedMap() { return sortedMap.keySet().toArray(); } public Object[] getDescSortedMap() { return descSortedMap.keySet().toArray(); } private TreeMap<Object, Number> sortedMap() { TreeMap<Object, Number> treeMap = new TreeMap<Object, Number>(new Comparator<Object>(){ public int compare(Object o1, Object o2) { Number n1 = map.get(o1); Number n2 = map.get(o2); if (n2.doubleValue() == n1.doubleValue()) return o1.hashCode() - o2.hashCode(); else return (int)(n1.doubleValue() - n2.doubleValue()); }}); Iterator it = map.keySet().iterator(); while(it.hasNext()) { Object key = it.next(); Number value = map.get(key); treeMap.put(key, value); } return treeMap; } private TreeMap<Object, Number> descSortedMap() { TreeMap<Object, Number> treeMap = new TreeMap<Object, Number>(new Comparator<Object>(){ public int compare(Object o1, Object o2) { Number n1 = map.get(o1); Number n2 = map.get(o2); if (n2.doubleValue() == n1.doubleValue()) return o2.hashCode() - o1.hashCode(); else return (int)(n2.doubleValue() - n1.doubleValue()); }}); Iterator it = map.keySet().iterator(); while(it.hasNext()) { Object key = it.next(); Number value = map.get(key); treeMap.put(key, value); } return treeMap; } }
如何对Map进行按值(value)排序?
/** * @param h * @return * 实现对map按照value升序排序 */ @SuppressWarnings("unchecked") public static Map.Entry[] getSortedHashtableByValue(Map h) { Set set = h.entrySet(); Map.Entry[] entries = (Map.Entry[]) set.toArray(new Map.Entry[set .size()]); Arrays.sort(entries, new Comparator() { public int compare(Object arg0, Object arg1) { Long key1 = Long.valueOf(((Map.Entry) arg0).getValue().toString()); Long key2 = Long.valueOf(((Map.Entry) arg1).getValue().toString()); return key1.compareTo(key2); } }); return entries; }
发表评论
-
ConcurrentHashMap在jdk1.7和jdk1.8中的不同
2021-12-02 17:30 0https://blog.csdn.net/qq_418849 ... -
CallableAndFuture
2012-07-24 11:31 1174import java.util.concurrent.Cal ... -
CountDownLatch
2012-07-24 11:00 1175concurrent包里面的CountDownLatch其实可 ... -
认识理解Java中native方法
2011-11-02 16:35 2358Java不是完美的,Java的不足除了体现在运行速度 ... -
java 数组复制:System.arrayCopy 深入解析
2011-11-02 10:02 4168转载:http://happyjin2010.it ... -
equals hashcode 深度分析
2011-07-14 13:17 11461.hashcode是用来查找的,如果你学过数据结构就应该知道 ... -
java proxy
2011-07-12 16:31 938代理?就是别人帮你管理叫代理. 举个例子 你是家里的主人, ... -
关于 JVM 命令行标志您不知道的 5 件事(来自IBM)
2010-11-29 17:10 965JVM 是多数开发人员视为理所当然的 Java 功能和性能背后 ... -
关于 Java Collections API 您不知道的 5 件事,第 1 部分(转自IBM)
2010-11-29 16:58 983对于很多 Java 开发人员 ... -
java线程安全总结(转载jameswxx)
2010-11-29 12:50 1365最近想将java基础的一些 ... -
说说new Integer和Integer.valueOf(转载jameswxx)
2010-11-29 12:23 1640看看这两个语句 Integer a=new Integer ... -
优化JVM参数提高eclipse运行速度
2010-11-26 16:13 883性能优化从身边做起。 首先建立评估体系,将workspac ... -
主题:一次Java垃圾收集调优实战
2010-11-26 15:29 11271 资料 •JDK5.0垃圾收集优化之--Don't Paus ... -
通过GC输出分析内存泄露问题
2010-11-26 15:13 1023SIP5.0以后服务的请求量爆发性增长,因此也暴露了原来没有暴 ... -
15种提高系统伸缩性和性能的最佳实践
2010-11-25 16:00 9931, 提高系统性能, 需要尽早做性能剖析, 而且要经常做.当项 ... -
JVM调优总结(一)-- 一些概念
2010-11-25 15:00 891数据类型 Java虚拟机中,数据类型可以分为两类:基本 ... -
DCL,双重检查(来自annegu)
2010-09-05 16:25 927对于多线程编程来说, ... -
JVM原理学习笔记一
2010-06-11 16:22 904最近在阅读 《Inside the J ... -
ImportDataFromMySQLToOracle
2009-12-10 10:42 1341import java.sql.Connection; im ... -
Merge two Hashtable<String, Integer>
2009-12-03 14:50 1361private static Hashtable< ...
相关推荐
a) 对于简单的排序,如数字和英文字母,我们可以创建一个新的`Comparator`,重写`compare()`方法。在这个例子中,比较两个对象(假设它们都是`String`类型)时,使用`String.valueOf(o1).compareTo(String.valueOf...
如果键是自定义对象,需要重写`compareTo()`方法来定义排序规则。另外,可以通过传入自定义的`Comparator`给构造函数,以实现自定义排序。 2. **红黑树**:`TreeMap`的数据结构是红黑树,这保证了它的插入、删除和...
需要注意的是,如果Map的键是自定义对象而非基本类型或字符串,那么需要重写这些对象的`compareTo`方法来实现自定义的排序逻辑。此外,如果希望根据值进行排序,可以创建一个新的`TreeMap`实例,并提供一个自定义的...
这样,我们可以通过 `TreeMap` 自动排序键值对,首先按照速度排序,如果速度相同,则按照型号排序。 首先,我们创建 `Car` 类: ```java public class Car { private String model; private int speed; public...
对于`TreeSet`,由于其只能存储单个对象,若要按值排序,我们需要创建一个包含键值对的自定义类,然后重写`compareTo()`方法,使其根据值进行比较。例如: ```java class ValueWrapper implements Comparable...
2. **使用TreeMap或Collections.sort()**:可以使用`TreeMap`或者`Collections.sort()`方法来对键进行排序。这里展示了两种不同的实现方式: - 使用`TreeMap`:创建一个`TreeMap`对象并传入`ByValueComparator`作为...
- 如果对HashMap进行大量的排序操作,考虑使用TreeMap,它默认按照key的自然顺序排序,也可以自定义Comparator。 **5. 结论** HashMap排序并不是HashMap本身的功能,而是通过其他手段实现的。根据实际需求,可以...
如果我们要根据值排序,可以在创建TreeMap时提供一个自定义的比较器,比较器的compare方法根据值进行比较。例如: ```java Map, Integer> map = new HashMap(); // 添加元素... Map, Integer> sortedByValue = new ...
- 对成绩进行排序,可以选择使用内置的`Collections.sort()`方法,前提是`Student`类实现了`Comparable`接口,重写`compareTo()`方法,比较依据是成绩。 - 或者,可以使用`Comparator`接口自定义比较逻辑,然后...
`TreeSet`和`TreeMap`是基于红黑树的数据结构,它们会自动根据元素的自然顺序或提供的`Comparator`进行排序。如果你需要一个自动排序的集合,可以考虑使用这两个类。 7. **自定义排序规则**: `Comparator`不仅...
java 字符串数字混搭字符串排序的实现方式有很多,除了使用 Comparator 接口外,还可以使用 другие方式,例如使用 TreeMap 或者 TreeSet 等数据结构。不同的实现方式有其优缺,需要根据实际情况选择合适的实现...
此外,`Comparator`还可以用于`TreeSet`和`TreeMap`等数据结构,它们在构造时或插入元素时可以接收一个`Comparator`,以保证插入的数据按照指定的顺序排列。 总之,`Comparator`在Android开发中扮演着至关重要的...
在IT行业中,尤其是在Android或者Java应用开发中,经常会遇到对数据集合进行...在实际项目中,还可以考虑使用更高级的数据结构(如TreeMap)或使用Android提供的`RecyclerView`组件,以优化性能和适应更多的界面布局。
Comparator接口有一个`compare(T o1, T o2)`方法,我们需重写此方法,使得比较两个Value时能按我们的需求排序。 - 示例代码: ```java Comparator, Integer>> valueComparator = new Comparator, Integer>>() { ...
例如,如果我们有一个Person类,我们可能希望按照年龄、姓名或者其他自定义规则进行排序,这时就可以创建一个实现了Comparator接口的匿名类或单独类,重写compare()方法来定义排序逻辑。 Comparator接口的典型用法...
为了快速查找,可以使用`TreeMap`,其天然支持按key排序。 4. **适配器(Adapter)** - 自定义一个`ArrayAdapter`,重写`getView()`方法,根据数据生成视图,同时计算每个条目对应的首字母。 - 实现`...
当我们需要根据Map的值进行排序时,例如,基于学生的成绩来排序他们的学号,我们可以使用`TreeMap`,但默认是按键排序。若要按值排序,可以将Map的`Entry`放入一个列表,然后使用`Collections.sort()`和自定义的`...
`TreeMap`按key自然排序或自定义Comparator排序,而`LinkedHashMap`则按照插入顺序或访问顺序排序。 ```java Map, User> sortedByKey = new TreeMap(map); Map, String> sortedByValue = new TreeMap(Comparator....
4. **构建索引**:根据数据集生成一个包含所有首字母的索引,可以使用Java的TreeMap数据结构,以首字母为键,对应的条目集合为值,便于快速查找。 **二、过滤搜索** 1. **SearchView**:Android系统提供了...
- **Map阶段**:使用`TreeMap`数据结构存储数据,`TreeMap`可以根据键的自然顺序进行排序,或者根据自定义的`Comparator`进行排序。在这里,我们需要在Map阶段存储当前文件中的最大5个数据,所以会用到`TreeMap`的`...