package ch12;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.Map.Entry;
import java.util.regex.Pattern;
public class App2 {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
Hashtable ht = new Hashtable();
ht.put("a", "3");
ht.put("b", "2");
ht.put("c", "1");
/* ---------不进行排序输出结果
* Enumeration e=ht.keys(); while(e.hasMoreElements()) { String
* tempkey=e.nextElement().toString(); int
* value=Integer.parseInt((String) ht.get(tempkey));
* System.out.println("key= "+tempkey +" ,value="+value); } Set s=
* ht.keySet();
*/
//--------对排序函数的使用
Map.Entry[] set = getSortedHashtable(ht);
// perportyTable
for (int i = 0; i < set.length; i++) {
System.out.print(set[i].getKey().toString());
System.out.println(set[i].getValue().toString());
}
}
/*
* * 方法名称:getSortedHashtable 参数:Hashtable h 引入被处理的散列表
* 描述:将引入的hashtable.entrySet进行排序,并返回
*/
/* -------------对key值进行排序
* public static Map.Entry[] getSortedHashtable(Hashtable 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) { Object key1 =
* ((Map.Entry)arg0).getKey(); Object key2 = ((Map.Entry)arg1).getKey();
* return ((Comparable)key1).compareTo(key2); }
*
* });
*
* return entries; }
*/
//--------同样的方法对value值进行排序
public static Map.Entry[] getSortedHashtable(Hashtable 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) {
int key1 = Integer.parseInt(((Map.Entry) arg0).getValue()
.toString());
int key2 = Integer.parseInt(((Map.Entry) arg1).getValue()
.toString());
return ((Comparable) new Integer(key1)).compareTo(new Integer( //---当然为了降序排只要把key1和key2互
key2)); //-----换一下
}
});
return entries;
}
}