您好:
請問,以下程式碼,如何用 值 來排序?
謝謝!
package a04b;import java.io.PrintStream;
import java.text.CollationKey;
import java.text.Collator;
import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;class TM
{
public static void main(String[] args)
{
System.out.println("the main");
Map<String, Integer> map = new TreeMap(new Comparator()
{
public int compare(Object o1, Object o2)
{
if ((o1 == null) || (o2 == null)) {
return 0;
}
Collator collator = Collator.getInstance();
CollationKey key1 = collator.getCollationKey(o1.toString());
CollationKey key2 = collator.getCollationKey(o2.toString());
System.out.println(o1 + "-->");
System.out.println(o2);
return key1.compareTo(key2);
}
});
map.put("A", 3);
map.put("D", 4);
map.put("C", 1);
System.out.println(((Integer)map.get("A")).intValue());
System.out.println(map);
}
}
請問,以下程式碼,如何用 值 來排序?
謝謝!
package a04b;import java.io.PrintStream;
import java.text.CollationKey;
import java.text.Collator;
import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;class TM
{
public static void main(String[] args)
{
System.out.println("the main");
Map<String, Integer> map = new TreeMap(new Comparator()
{
public int compare(Object o1, Object o2)
{
if ((o1 == null) || (o2 == null)) {
return 0;
}
Collator collator = Collator.getInstance();
CollationKey key1 = collator.getCollationKey(o1.toString());
CollationKey key2 = collator.getCollationKey(o2.toString());
System.out.println(o1 + "-->");
System.out.println(o2);
return key1.compareTo(key2);
}
});
map.put("A", 3);
map.put("D", 4);
map.put("C", 1);
System.out.println(((Integer)map.get("A")).intValue());
System.out.println(map);
}
}
解决方案 »
- 关于类加载器的几个疑问
- java jni 内存溢出
- 类创建方法有四个:New 反射。
- 获取get方式提交的汉字为什么遇到奇数位的汉字最后一个位汉字就显示不出来
- 在线急等 short i=97; char c = i;为什么会提示精度丢失?
- 在一个大型的软件中,我只负责一小部分,也就几个类。那么我怎么进行单元测试(junit)
- 【请教】如何设定button或者jbutton的快捷键?
- java填充相同字符的方法?
- 我手动删除了jbuilder6自带的jdk,如何才能让jbuilder用我其他地方的jdk呀?
- 高手请详细谈谈电子商务中间件weblogic/websphere等的性能和易开发性的比较?
- 配置springMVC加hibernate 遇见的问题
- java新手
这个集合的实现排序的话应该是使用类Collections的sort方法来实现,sort方法有两种:
1.要排序的类实现Comparable接口来完成,这样才能正确使用这方法
2.单独写个比较器器(单独写个类),实现Comparator接口。然后这个比较器作为两个参数的第二个参数去进行使用(实例化对象,new一个)
然后就直接使用,不过你这是基本类型,应该不用。我只能告诉你可以这样,我自己无法具体写,因为看到你这个问题突然发现自己对集合的熟练度还有问题,于是打算去补补了
如果是根据key,也就是英文字母排序的话,也可以直接使用
给一个我以前写的根据中文排序的public class SortChineseName implements Comparator<User> {
Collator cmp = Collator.getInstance(java.util.Locale.CHINA); @Override
public int compare(User o1, User o2) {
if (cmp.compare(o1.getUid(), o2.getUid()) > 0) {
return 1;
} else if (cmp.compare(o1.getUid(), o2.getUid()) < 0) {
return -1;
}
return 0;
}
}实现Comparator 接口。
我有看過Collection.sort的方法
但 我想用treemap 的compare來試試看
不知是否有方法?
謝謝!
然后实现compare方法即可。
TreeMap<String, String> treeMap = new TreeMap<String, String>(
new Comparator<String>() { @Override
public int compare(String arg0, String arg1) {
// TODO Auto-generated method stub
return 0;
} });
若我用以下的程式碼,他只是要比 STRING ,這是比KEY, 若我想要 比的是 值而用 new Comparator<Integer>() 也無法COMPILER 過 TreeMap<String,Integer> map = new TreeMap<String,Integer >(
new Comparator<String>() { @Override
public int compare(String arg0, String arg1) {
// TODO Auto-generated method stub
return ;
} }
);
貌似要将EntrySet转换成list,然后使用Collections.sor排序。
这是摘自百度。