/**
* @(#)Test.java
*
* Test application
*
* @author
* @version 1.00 2008/12/16
*/
import java.util.*;
import java.text.*;
public class Test {
public static void main(String[] args) { // TODO Auto-generated method stub
CollatorComparator comparator = new CollatorComparator();
TreeMap map = new TreeMap(); for(int i=0; i<10; i++) { String s = ""+(int)(Math.random()*1000); map.put(s,s); } map.put("abcd","abcd"); map.put("Abc", "Abc"); map.put("bbb","bbb"); map.put("BBBB", "BBBB"); map.put("湖南","湖南"); map.put("浙江","浙江"); map.put("上海", "上海"); map.put("厦门", "厦门"); map.put("东莞", "东莞"); map.put("阿富汗", "阿富汗"); Collection col = map.values(); Iterator it = col.iterator(); while(it.hasNext()) { System.out.println(it.next()); }}}
//编写一个自己的Comparator的子类
class CollatorComparator implements Comparator {Collator collator = Collator.getInstance();public int compare(Object element1, Object element2) { CollationKey key1 = collator.getCollationKey(element1.toString()); CollationKey key2 = collator.getCollationKey(element2.toString()); return key1.compareTo(key2);}}为什么中文排序还是发生错误!在TreeMap中怎么运用自己编写一个Comparator的子类?
敬请高手指教!
另如果用
Map<String,employee> test=new TreeMap<String,employee>;其中employee是一自己编写的一个类
class employee
{
public employee(String name)
{
........
}
...........
}
如果我想用employee的name来排序的话,给怎么办?
* @(#)Test.java
*
* Test application
*
* @author
* @version 1.00 2008/12/16
*/
import java.util.*;
import java.text.*;
public class Test {
public static void main(String[] args) { // TODO Auto-generated method stub
CollatorComparator comparator = new CollatorComparator();
TreeMap map = new TreeMap(); for(int i=0; i<10; i++) { String s = ""+(int)(Math.random()*1000); map.put(s,s); } map.put("abcd","abcd"); map.put("Abc", "Abc"); map.put("bbb","bbb"); map.put("BBBB", "BBBB"); map.put("湖南","湖南"); map.put("浙江","浙江"); map.put("上海", "上海"); map.put("厦门", "厦门"); map.put("东莞", "东莞"); map.put("阿富汗", "阿富汗"); Collection col = map.values(); Iterator it = col.iterator(); while(it.hasNext()) { System.out.println(it.next()); }}}
//编写一个自己的Comparator的子类
class CollatorComparator implements Comparator {Collator collator = Collator.getInstance();public int compare(Object element1, Object element2) { CollationKey key1 = collator.getCollationKey(element1.toString()); CollationKey key2 = collator.getCollationKey(element2.toString()); return key1.compareTo(key2);}}为什么中文排序还是发生错误!在TreeMap中怎么运用自己编写一个Comparator的子类?
敬请高手指教!
另如果用
Map<String,employee> test=new TreeMap<String,employee>;其中employee是一自己编写的一个类
class employee
{
public employee(String name)
{
........
}
...........
}
如果我想用employee的name来排序的话,给怎么办?
看下面我写的例子:public class TestComparator {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("广东");
list.add("甘肃");
list.add("贵州");
list.add("福建");
list.add("海南");
Comparator cmp = Collator.getInstance(java.util.Locale.CHINA);
Collections.sort(list, cmp);
Collections.sort(list, new Comparator<String>() {
public int compare(String o1, String o2) {
return toUTF_8(o1).compareTo(toUTF_8(o2));
}
});
for (String string : list) {
System.out.println(string);
}
}
private static String toUTF_8(String str) {
try {
return new String(str.getBytes("GB2312"), "ISO-8859-1");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
}
?