熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

使用Maps

2013-11-15 11:49:25  來源: JSP教程 

  

  Map(接口) 維持鍵-值對應關系(對)以便通過一個鍵查找相應的值
  HashMap* 基於一個散列表實現(用它代替Hashtable)針對鍵-值對的插入和檢索這種形式具有最穩定的性能可通過構建器對這一性能進行調整以便設置散列表的能力裝載因子
  ArrayMap 由一個ArrayList後推得到的Map對反復的順序提供了精確的控制面向非常小的Map設計特別是那些需要經常創建和刪除的對於非常小的Map創建和反復所付出的代價要比HashMap低得多但在Map變大以後性能也會相應地大幅度降低
  TreeMap 在一個紅-黑樹的基礎上實現查看鍵或者鍵-值對時它們會按固定的順序排列(取決於Comparable或Comparator稍後即會講到)TreeMap最大的好處就是我們得到的是已排好序的結果TreeMap是含有subMap()方法的唯一一種Map利用它可以返回樹的一部分
  
  下例包含了兩套測試數據以及一個fill()方法利用該方法可以用任何兩維數組(由Object構成)填充任何Map這些工具也會在其他Map例子中用到
  
  //: Mapjava
  // Things you can do with Maps
  package cnewcollections;
  import javautil*;
  
  public class Map {
   public final static String[][] testData = {
  { Happy Cheerful disposition }
  { Sleepy Prefers dark quiet places }
  { Grumpy Needs to work on attitude }
  { Doc Fantasizes about advanced degree}
  { Dopey A for effort }
  { Sneezy Struggles with allergies }
  { Bashful Needs selfesteem workshop}
   };
   public final static String[][] testData = {
  { Belligerent Disruptive influence }
  { Lazy Motivational problems }
  { Comatose Excellent behavior }
   };
   public static Map fill(Map m Object[][] o) {
  for(int i = ; i < o.length; i++)
   m.put(o[i][0], o[i][1]);
  return m;
   }
   // Producing a Set of the keys:
   public static void printKeys(Map m) {
  System.out.print("Size = " + m.size() +", ");
  System.out.print("Keys: ");
  Collection1.print(m.keySet());
   }
   // Producing a Collection of the values:
   public static void printValues(Map m) {
  System.out.print("Values: ");
  Collection1.print(m.values());
   }
   // Iterating through Map.Entry objects (pairs):
   public static void print(Map m) {
  Collection entries = m.entries();
  Iterator it = erator();
  while(it.hasNext()) {
   Map.Entry e = (Map.Entry)it.next();
   System.out.println("Key = " + e.getKey() +
    ", Value = " + e.getValue());
  }
   }
   public static void test(Map m) {
  fill(m, testData1);
  // Map has 'Set' behavior for keys:
  fill(m, testData1);
  printKeys(m);
  printValues(m);
  print(m);
  String key = testData1[4][0];
  String value = testData1[4][1];
  System.out.println("ntainsKey(\"" + key +
   "\"): " + ntainsKey(key));
  System.out.println("m.get(\"" + key + "\"): "
   + m.get(key));
  System.out.println("ntainsValue(\""
   + value + "\"): " +
   ntainsValue(value));
  Map m2 = fill(new TreeMap(), testData2);
  m.putAll(m2);
  printKeys(m);
  m.remove(testData2[0][0]);
  printKeys(m);
  m.clear();
  System.out.println("m.isEmpty(): "
   + m.isEmpty());
  fill(m, testData1);
  // Operations on the Set change the Map:
  m.keySet().removeAll(m.keySet());
  System.out.println("m.isEmpty(): "
   + m.isEmpty());
   }
   public static void main(String args[]) {
  System.out.println("Testing HashMap");
  test(new HashMap());
  System.out.println("Testing TreeMap");
  test(new TreeMap());
   }
  } ///:~
  
  printKeys(),printValues()以及print()方法並不只是有用的工具,它們也清楚地揭示了一個Map的Collection“景象”的產生過程。tW.wiNgwIT.ComkeySet()方法會產生一個Set,它由Map中的鍵後推得來。在這兒,它只被當作一個Collection對待。values()也得到了類似的對待,它的作用是產生一個List,其中包含了Map中的所有值(注意鍵必須是獨一無二的,而值可以有重復)。由於這些Collection是由Map後推得到的,所以一個Collection中的任何改變都會在相應的Map中反映出來。
  print()方法的作用是收集由entries產生的Iterator(反復器),並用它同時打印出每個“鍵-值”對的鍵和值。程序剩余的部分提供了每種Map操作的簡單示例,並對每種類型的Map進行了測試。
  當創建自己的類,將其作為Map中的一個鍵使用時,必須注意到和以前的Set相同的問題。
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19687.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.