今天在學習的時候用到了一個散列表。在不是很了解的情況下百度了一下,了解了不少,所以寫下來作為以后參考。何為散列表?散列表,又稱為哈希表,是線性表中一種重要的存儲方式和檢索方法。在散列表中,可以對節點進行快速檢索。散列表算法的基本思想是:由結點的關鍵碼值決定結點的存儲地址,即以關鍵碼值k為自變量,通過一定的函數關系h(稱為散列函數),計算出對應的函數值h(k)來,將這個值解釋為結點的存儲地址,將結點存入該地址中,檢索時,根據要檢索的關鍵碼值,用同樣的散列函數計算出地址,然后,到相應的地址中去獲取要找的結點數據。因此,散列表有一個重要特征:平均檢索的長度不直接依賴于表中元素的個數。
          ---- 散列表最重要的一個指標是負載因子,即散列表中結點數目與表中能容納的總結點數的比值,它描述了散列表的飽和程度,負載因子越接近1.0,內存的使用效率越高,元素的尋找時間越長,同樣,負載因子越接近0.0,元素的尋找時間越短,但內存的浪費越大。Hashtable類缺省的負載因子為0.75. 
                  Hashtable類
          ---- Hashtable類為我們提供了散列表完整的功能,可以讓我們很方便地構造和使用散列表,查詢信息。
          ---- 1.創建散列表對象

          ---- Hashtable類的構造器主要有下面幾種形式:

          public Hashtable(int initialCapacity, float loadFactor);
          public Hashtable(int initialCapacity);
          public Hashtable();
          在本文的實例中,我們使用了最簡單的一種:
          Hashtable stockInfo = new Hashtable();

          ---- 2.充填數據
          ---- 當構造了Hashtable對象后,我們就可以將數據填入該對象中,以便以后查詢。Hashtable類提供了put方法來完成數據的裝填,其原型如下:

          ---- public synchronized Object put(Object key, Object value);

          ---- 3.查詢數據

          ---- 查詢數據可以使用get方法,其原型如下:

          ---- public synchronized Object get(Object key)

          ---- 4.其它常用的方法

          public int size();
          //返回散列表中的結點數目
          public boolean isEmpty();
          //判斷散列表是否為空
          public boolean containsValue(Object value);
          //判斷散列表中是否含有某值
          public synchronized boolean containsKey(Object key);
          //判斷散列表中是否含有某個結點
          public synchronized void clear();
          //清空整個散列表
                 StringTokenizer類
          ---- StringTokenizer類的主要用途是將字符串以定界符為界,分析為一個個的token(可理解為單詞),定界符可以自己指定。
          ---- 構造器有下面幾種形式:

          public StringTokenizer(String str,
          String delim, boolean returnTokens);
          public StringTokenizer(String str, String delim);
          public StringTokenizer(String str);
          其中,str為需分析的字符串,delim為定界符,
          Tokens描述是否將定界符作為一個token。

          ---- 其它常用的方法有:
          public boolean hasMoreTokens() ;
          //判斷字符串中是否還有token
          public String nextToken();//
          StringTokenizer對象的下一個token
          我們來看一個簡單的注冊頁面。我們通過name.jsp頁面把數據傳遞到login.jsp
            (Name.jsp)
          <%@ page contentType="text/html; charset=gb2312" %>
          <html>
          <head>
          <title>Register Page</title>
          </head>

          <body>
          <form name="form1" action="login.jsp" method="post">
          <p>Please input your name that you wanna registered:
          <input type="text" name="name" value="abc"><br>
          <p>Sendding by this button:
          <input type="submit" name="submit" value="Sendding">
          </form>
          </body>
          </html>
          然后提交到login.jsp
          <%@ page contentType="text/html; charset=gb2312" %>
          <%@ import page="java.util.*" %>
          <html>
          <head>
          <title>login.jsp</title>
          </head>

          <body>
          <%!
             Hashtable hashtable=new Hashtable();
             public synchronized void putName(String s)
             {
               hashtable.put(s,s);
             }
          %>
          <%
            String name=request.getParameter("name");
            if(name==null)
               {
              name="";
            }
            byte b[]=name.getBytes("ISO-8859-1");
            name=new String(b);
            if(!(hashtable.containsKey(name)))
             {
               putName(name);
            out.print("<br>"+"你已經注冊成功");
            out.print("<br>"+"你注冊的名字是"+name);
             }
             else
             {
              out.print("<br>"+"該名字已經存在,請您換個名字。");
             }
          %>
          </body>
          </html>

          posted on 2005-12-14 10:42 飛揚 閱讀(587) 評論(0)  編輯  收藏 所屬分類: Java

          統計

          FAQ網站

          JSP/Java/Servlet開發工具

          JSP/Java/Servlet技術著名網站

          JSP/Servlet應用程序站點

          優選博客

          主站蜘蛛池模板: 寻甸| 沙洋县| 于都县| 改则县| 呼和浩特市| 玉环县| 辰溪县| 彭州市| 吉木萨尔县| 延长县| 花莲县| 信宜市| 邹城市| 北流市| 简阳市| 高唐县| 神农架林区| 渝北区| 耒阳市| 龙江县| 清苑县| 乐业县| 潜江市| 徐汇区| 香港| 纳雍县| 齐齐哈尔市| 门头沟区| 金川县| 吴桥县| 武平县| 拜城县| 横峰县| 腾冲县| 乐亭县| 铁岭市| 固镇县| 遂昌县| 霍邱县| 新民市| 登封市|