六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

Java中使用散下文完成股票行情的查詢(轉)

[摘要]Java中利用散列表實現股票行情的查詢 建設銀行云南省保山地區分行 楊紹方 ---- 在java中,提供了一個散列表類Hashtable,利用該類,我們可以按照特定的方式來存儲數據,從而達到快速檢索的目的。本文以查詢股票的收盤數據為例,詳細地說明java中散列表的使用方法。 一、散列表的原理 --...
Java中利用散列表實現股票行情的查詢
建設銀行云南省保山地區分行
楊紹方
---- 在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\appletviewerStockQuote.html




主站蜘蛛池模板: 欧美一级黄色片视频 | 性大特级毛片视频 | 日韩一区国产二区欧美三区 | 日本午色www高清视频 | 婷婷色中文网 | 一个色综合网站 | 亚洲成人福利在线 | 日韩欧美在线综合网高清 | 最新高清无码专区 | 亚州人成网在线播放 | 亚洲欧美综合在线观看 | 手机看片日韩在线 | 羞羞色院91网站 | 一级做a爱过程免费视频高清 | 亚洲无线视频 | 亚洲午夜久久影院 | 亚洲综合激情丁香六月 | 青青草原国产在线观看 | 亚洲欧美人妖另类激情综合区 | 香蕉啪 | 三级理论在线 | 日韩亚洲视频 | 四虎成人影院网址 | 日本网站在线播放 | 午夜无遮挡怕怕怕免费视频 | 午夜视频在线观看免费视频 | 亚洲第一页在线观看 | 日韩精品视频在线播放 | 日韩在线黄色 | 中国黄色毛片 大片 | 一区二区三区视频在线 | 三级黄色在线视频中文 | 青草影院在线观看 | 天堂2019| 日韩国产成人资源精品视频 | 亚洲欧美另类综合 | 日本三级香港三级三级人!妇久 | 日本高清视频色www在线观看 | 天天爱添天天爱添天天爱添 | 欧美一级片手机在线观看 | 欧美一级亚洲一级 |