<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    今天在學習的時候用到了一個散列表。在不是很了解的情況下百度了一下,了解了不少,所以寫下來作為以后參考。何為散列表?散列表,又稱為哈希表,是線性表中一種重要的存儲方式和檢索方法。在散列表中,可以對節點進行快速檢索。散列表算法的基本思想是:由結點的關鍵碼值決定結點的存儲地址,即以關鍵碼值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 飛揚 閱讀(583) 評論(0)  編輯  收藏 所屬分類: Java

    統計

    FAQ網站

    JSP/Java/Servlet開發工具

    JSP/Java/Servlet技術著名網站

    JSP/Servlet應用程序站點

    優選博客

    主站蜘蛛池模板: 999久久久免费精品播放| 日韩特黄特色大片免费视频| 亚洲国产精品张柏芝在线观看| 国产一卡二卡3卡四卡免费| 国产午夜亚洲精品不卡| 亚洲欧洲精品无码AV| 很黄很黄的网站免费的| 看亚洲a级一级毛片| 国产亚洲精品美女久久久| 日韩一区二区a片免费观看| 春意影院午夜爽爽爽免费| 久久国产亚洲高清观看| 四虎影视永久免费观看网址| 欧洲人免费视频网站在线| 亚洲国产无线乱码在线观看| 亚洲欧洲无码AV电影在线观看 | 亚洲天堂电影在线观看| 免费大黄网站在线观| 久久久久久国产精品免费无码| mm1313亚洲国产精品无码试看| 亚洲卡一卡2卡三卡4卡无卡三| 波多野结衣中文一区二区免费| 1000部拍拍拍18勿入免费视频下载| 美女裸体无遮挡免费视频网站| 久久久久亚洲精品天堂| 亚洲裸男gv网站| 无码少妇一区二区浪潮免费| 一级毛片不卡免费看老司机| 久久亚洲精品国产精品婷婷| 亚洲A∨无码一区二区三区| 亚洲乱码国产一区网址| 成人毛片18女人毛片免费96 | 精品久久久久亚洲| 亚洲成在人线电影天堂色| 亚洲伊人久久大香线蕉综合图片| 性感美女视频在线观看免费精品 | 免费精品久久天干天干| 美女一级毛片免费观看| 国产精品亚洲精品观看不卡| 亚洲嫩草影院久久精品| 国产gv天堂亚洲国产gv刚刚碰|