Hashtable 排序

来源:互联网 发布:国产js 12.7mm狙击步枪 编辑:程序博客网 时间:2024/05/15 03:51

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;
 }

}

原创粉丝点击