亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Java中利用散列表實現股票行情的查詢

2019-11-18 13:27:52
字體:
來源:轉載
供稿:網友

  ---- 在java中,提供了一個散列表類Hashtable,利用該類,我們可以按照特定的方式來存儲數據,從而達到快速檢索的目的。本文以查詢股票的收盤數據為例,具體地說明java中散列表的使用方法。
  
  一、散列表的原理
  ---- 散列表,又稱為哈希表,是線性表中一種重要的存儲方式和檢索方法。在散列表中,可以對節點進行快速檢索。散列表算法的基本思想是:由結點的要害碼值決定結點的存儲地址,即以要害碼值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
  
  
  四、實例
  ---- 本文使用的股票行情為上海和深圳證券交易所的收盤行情,文件名為hqsj.txt,下面是文件中的一行數據:
  ---- 600122宏圖高科 18.90 18.80 18.90 18.20 18.27 3155 582.96
  
  ---- 下面是完整的源程序,在JDK1.2下使用javac編譯通過。
  
  import java.io.*;
  import java.util.*;
  import java.awt.*;
  import java.applet.*;
  import java.awt.event.*;
  
  public class StockQuote extends Applet
  implements ActionListener
  {
  PRivate static final File INFO_FILE =
  new File("hqsj.txt");
  private Hashtable stockInfo;
  TextField stockID;
  Button button1;
  private String quoteid,quotename;
  
  public void init()
  {
  add(new Label("股票代碼"));
  stockID = new TextField(6);
  add(stockID);
  button1 = new Button("查詢");
  button1.addActionListener(this);
  add(button1);
  resize(500, 300);
  }
  
  public void start()
  {
  loadinfo();
  }
  
  protected boolean loadinfo()
  {
  String fileLine;
  StringTokenizer tokenize;
  String id;
  StringBuffer name;
  
  try {
  // 創建一個訪問數據文件的stream
  BufferedReader stockInput = new
  BufferedReader(new FileReader(INFO_FILE));
  // 創建Hashtable對象
  stockInfo = new Hashtable();
  // 每次從文件中讀一行數據
  while ((fileLine = stockInput.readLine()) != null) {
  // 將每一行數據分解為tokens.
  tokenize = new StringTokenizer(fileLine);
  try {
  id = tokenize.nextToken();
  // 創建一個放置股票信息的buffer
  name = new StringBuffer();
  while(tokenize.hasMoreTokens()) {
  name.append(tokenize.nextToken());
  if (tokenize.hasMoreTokens()) {
  name.append("");
  }
  }
  // 向Hashtable中充填記錄
  stockInfo.put(id,name.toString());
  } catch(NullPointerException excpt) {
  System.err.println("充填數據時出錯: " + excpt);
  } catch(NoSUChElementException excpt) {
  System.err.println("無效的數據記錄 " +
  "in file: " + excpt);
  }
  }
  stockInput.close();
  
  } catch(FileNotFoundException excpt) {
  System.err.println("不能發現文件: " + excpt);
  return false;
  } catch(IOException excpt) {
  System.err.println("I/O故障: " + excpt);
  return false;
  }
   return true;
  }
  
  protected String getQuote(String StockID)
  {
  String info;
  
  // 從Hashtable得到數據
  info = (String)stockInfo.get(StockID);
  if (info != null)
  return info;
  else
  return "股票代碼錯誤!";
  }
  
  public void paint(Graphics g)
  {
  g.drawString("股票代碼"+quoteid+":" ,10,60);
  g.drawString("股票名稱"+"前收"+"今開"+"最高"
  +"最低"+"收盤"+"交易量"+"交易金額", 10, 90);
  g.drawString(quotename, 10, 120);
  }
  
  public void actionPerformed(ActionEvent ev)
  {
  String label = ev.getActionCommand();
  if (label.equals("查詢"))
  {
  quoteid = stockID.getText();
  if(quoteid != null)
  quotename = getQuote(quoteid);
  else quotename = "請輸入股票代碼!";
  repaint();
  }
  }
  }
  
  ---- 由于java固有的、安全方面的限制,假如不使用SecurityPermission或數字簽名等措施,java程序就不具有讀取本地文件的權限,為了節省篇幅,本文對此不再多做討論,將編譯得到的StockQuote.class放到一個.Html文件中,直接使用jdk1.2提供的appletviewer,其命令行的使用方法如下:
  d:/jdk1.2/bin/appletviewer StockQuote.html

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久影视免费观看| 色噜噜狠狠狠综合曰曰曰88av| 日韩欧美999| 国产精品青青在线观看爽香蕉| 欧洲午夜精品久久久| 国内精品一区二区三区四区| 国产噜噜噜噜久久久久久久久| 一区二区欧美久久| 国产成人亚洲综合青青| 国产精品免费网站| 日韩免费观看在线观看| 欧美性生交xxxxxdddd| 国产一区红桃视频| 国产一区视频在线| 伊人久久久久久久久久久| 91精品国产99| 久久精品91久久久久久再现| 日韩中文字幕亚洲| 国产欧美 在线欧美| 国产91精品高潮白浆喷水| 精品香蕉一区二区三区| 亚洲国产日韩精品在线| 亚洲日本aⅴ片在线观看香蕉| 78m国产成人精品视频| 国产亚洲精品高潮| 超碰91人人草人人干| 国产成人精品在线视频| 亚洲第一男人av| 午夜精品www| 国产亚洲福利一区| 久久网福利资源网站| 97婷婷大伊香蕉精品视频| 国产精品成人一区二区三区吃奶| 欧美成人中文字幕在线| 亚洲精品国产欧美| xvideos亚洲| 色老头一区二区三区在线观看| zzjj国产精品一区二区| 欧美成人sm免费视频| 成人激情视频网| 成人av色在线观看| 精品日韩中文字幕| 亚洲一区二区久久久| 亚洲另类xxxx| 国语自产在线不卡| 欧美自拍视频在线观看| 尤物yw午夜国产精品视频明星| 久久久久久久久久久91| 久久久精品国产一区二区| 国产精品吊钟奶在线| 日韩av在线一区二区| 91tv亚洲精品香蕉国产一区7ujn| 日韩精品亚洲精品| 国产精品视频公开费视频| 美日韩精品视频免费看| 欧美电影免费观看网站| 91在线精品视频| 亚洲free嫩bbb| 国产精品视频自在线| 欧美理论片在线观看| 午夜精品福利视频| 2023亚洲男人天堂| 亚洲精品国产拍免费91在线| 国产成人精品久久二区二区91| 日韩精品欧美激情| 久久久亚洲精选| 久久久精品国产亚洲| 97精品国产aⅴ7777| 日韩亚洲第一页| 欧美激情一级精品国产| 欧美激情在线视频二区| 亚洲女人天堂视频| 中文字幕日韩欧美在线视频| 国产欧美日韩高清| 精品国产鲁一鲁一区二区张丽| 日韩av在线网| 国产亚洲精品日韩| 日本91av在线播放| 中文字幕日韩欧美| 97国产精品人人爽人人做| 91亚洲精品久久久久久久久久久久| 操人视频在线观看欧美| 成人免费在线视频网址| 欧美夫妻性视频| 国产视频久久久久| 国内精品久久久| 精品日韩中文字幕| 日韩中文字幕免费视频| 欧美日韩亚洲国产一区| 美日韩精品免费观看视频| 中文亚洲视频在线| 国产一区二区三区毛片| 国产精品久久久久9999| 国产成人精品综合久久久| 欧美激情久久久久久| 亚洲欧美第一页| 亚洲欧美三级伦理| 亚洲最新av在线网站| 亚洲激情视频在线播放| 欧洲亚洲在线视频| 久久久伊人欧美| 欧美日韩国产在线看| 久久韩国免费视频| 91久久中文字幕| 欧美肥婆姓交大片| 国产成人一区二区在线| 91国在线精品国内播放| 最近中文字幕日韩精品| 国产欧美韩国高清| 亚洲人成网在线播放| 久久精品99久久久香蕉| 日韩国产高清视频在线| 亚洲国产小视频在线观看| 亚洲视频axxx| 2020国产精品视频| 欧美一级成年大片在线观看| 91沈先生在线观看| 91精品国产91| 亚洲精品国产精品久久清纯直播| 久久精品国产电影| 57pao国产精品一区| 国产日韩在线播放| 在线视频欧美性高潮| 91国产精品91| 亚洲久久久久久久久久| 久久免费精品视频| 一本色道久久88亚洲综合88| 欧美日韩在线观看视频小说| 国产精品久久久久久久久久久新郎| 精品国产户外野外| 不用播放器成人网| 黑人巨大精品欧美一区二区三区| 国产98色在线| 最新亚洲国产精品| 亚洲视频日韩精品| 国产91精品久久久久久久| 97精品国产aⅴ7777| 久久99国产精品久久久久久久久| 亚洲免费av网址| 国产女同一区二区| 日韩在线视频导航| 久久久久www| 亚洲最新在线视频| 亚洲色图在线观看| 国产欧美精品久久久| 91成品人片a无限观看| 2019中文字幕在线观看| 久久久久亚洲精品成人网小说| 亚洲影院色在线观看免费| 色综合天天狠天天透天天伊人| 亚洲天堂久久av| 日韩精品视频在线观看网址| 欧美日韩免费一区| 欧美一级电影在线| 国产精品久久久久久久久久东京| 亚洲天堂av女优| 国产成人在线精品| 亚洲人成电影网站色…| 亚洲国产精品久久91精品| 国产精品男人爽免费视频1| 欧美日韩第一页| 一区二区三区国产视频| 日韩精品久久久久久久玫瑰园| 在线精品高清中文字幕|