java 股票 代码_Java中利用散列表实现股票行情的查询_java
---- 在java中,提供了一个散列表类Hashtable,利用该类,我们可以按照特定的方式来存储数据,从而达到快速检索的目的。本文以查询股票的收盘数据为例,详细地说明java中散列表的使用方法。
一、散列表的原理
---- 散列表,又称为哈希表,是线性表中一种重要的存储方式和检索方法。在散列表中,可以对节点进行快速检索。散列表算法的基本思想是:由结点的关键码值决定结点的存储地址,即以关键码值k为自变量,通过一定的函数关系h(称为散列函数),计算出对应的函数值h(k)来,将这个值解释为结点的存储地址,将结点存入该地址中,检索时,根据要检索的关键码值,用同样的散列函数计算出地址,然后,到相应的地址中去获取要找的结点数据。因此,散列表有一个重要特征:平均检索的长度不直接依赖于表中元素的个数。
---- 散列表最重要的一个指标是负载因子,即散列表中结点数目与表中能容纳的总结点数的比值,它描述了散列表的饱和程度,负载因子越接近1.0,内存的使用效率越高,元素的寻找时间越长,同样,负载因子越接近0.0,元素的寻找时间越短,但内存的浪费越大。Hashtable类缺省的负载因子为0.75.
二、Hashtable类
---- Hashtable类为我们提供了散列表完整的功能,可以让我们很方便地构造和使用散列表,查询信息。
---- 1.创建散列表对象
http://www.gaodaima.com/64798.htmlJava中利用散列表实现股票行情的查询_java
---- 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
欢迎大家阅读《Java中利用散列表实现股票行情的查询_java》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码
微信 赏一包辣条吧~
支付宝 赏一听可乐吧~
java 股票 代码_Java中利用散列表实现股票行情的查询_java相关推荐
- java jmf 视屏监控的核心代码_Java中利用JMF编写摄像头拍照程序_java
我把程序分为两种,有趣的和无趣的,最近做了几个有趣的项目,其中一个,应当就算是摄像头拍照程序了.用于现场拍照,生成照片,主要用到java Media Framework(JMF). 首先到SUN下载最 ...
- java 可变参数列表_java中可变参数列表的实现方法
我们在对可变参数有一定的认识后,可以引申一下它的使用范围.在数组中也会需要参数的传入,那么结合参数的数量不固定,我们在参数类型上也得到了增加,这就是本篇所要讲的可变参数列表.下面我们就java可变参数 ...
- java 线程类 通信_Java 中利用管道实现线程间的通讯
在Java 语言中,提供了各种各样的输入输出流(stream),使我们能够很方便的对数据进行操作,其中,管道(pipe)流是一种特殊的流,用于在不同线程(threads)间直接传送数据.一个线程发送数 ...
- 力扣242.有效的字母异位词(Java语言,排序法、散列表法)
题目描述: 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词. 解题思路: 思路1: ...
- set列表对象去重_java中List对象列表去重或取出以及排序
面试碰到几次list的去重和排序.下面介绍一种做法: 1. list去重 1.1 实体类Student List容量10k以上,要求去重复.这里Student的重复标准是属性相同,因此需要重写equa ...
- 数据结构课程设计-利用散列表做一个电话号码查找系统
[基本要求] (1)设每个记录有下列数据项:电话号码.用户名.地址: (2)从键盘输入各记录,分别以电话号码和用户名为关键字建立散列表: (3)采用一定的方法解决冲突: (4)查找并显示给定电话号码的 ...
- html 中箭头的代码,HTML中利用div+CSS实现简单的箭头图标的代码
/*箭头向上*/ .to_top { width: 0; height: 0; border-bottom: 10px solid #ccc; border-left: 10px solid tran ...
- NE40E中利用访问控制列表在EBGP中拒绝不需要引入的路由
利用访问控制列表将不需要引入的路由限入 1.建立访问控制列表,将需要限制的路由加入,设置为允许(permit),意为标识路由. acl number 2006 rule 5 per ...
- java队列怎么实现线程_Java中利用线程和队列实现入库操作
Java单线程中,如果需要大量的数据库操作,会在IO方面产生瓶颈,特别是数据库连接失败时,大量资源会消耗在数据库连接的检测上,从而使程序的实时响应速度变慢.解决的办法就是将数据库操作单独放置在一个线程 ...
最新文章
- [leetcode] Minimum Path Sum
- LeetCode 369. Plus One Linked List--链表--C++,Python解法
- Excel表格快速将公式运用到一整列
- λ-矩阵(若尔当标准形的理论推论)
- 嘉兴学院计算机专业最低录取分,嘉兴学院南湖学院计算机类专业2015年在广西理科高考录取最低分数线...
- python实现队列_用Python实现的数据结构与算法:队列
- 阿里云部署java web
- Geolocation error:Only secure origins are allowed (see:https://goo.gl/Y0ZkNV)..
- 架构与设计的流程和核心概念笔记:三、业务层设计
- php实现一键截取全屏代码,截全屏电脑快捷键是什么
- 稳压管(齐纳二极管)封装型号大全
- 信息系统运行管理员有必要考吗?现在备考还来得及吗?
- 技术与管理看看华为怎么说
- Android 录屏+录音,原生代码,无需root权限,好用更好懂
- 做人10大心机:不能太单纯 适度伪装自己
- 讲给后台程序员看的前端系列教程(06)——HTML5标签(5)
- lisp语言1y1c,常青树LISP语言
- 海阔凭鱼跃 天高任鸟飞-大上海,人人都向往的城市
- 基于爬虫的数据分析--Python3抓取网易云音乐原理及实践
- The Django Book 网址
热门文章
- Linux vim编写编译运行一个.c文件(centeos 8 HelloWorld.c)
- 增加数据_咱晋城人口又增加了?最新数据来了
- 怎么用PHP修改文字大小,如何利用PHP和CSS改变网页文字大小
- wcf 返回图片_wcf http 返回图片
- 动态换ip如何实现_三种方法解决动态换IP需求
- 使用python开发网页游戏_不敢想!不敢想!我用Python自动玩转2048游戏
- workbench出现“Unable to start the geometry editor”
- OpenGL-坐标系
- PJSIP UA分析(1)--PJSUA主函数
- beautifulsoup网页爬虫解析_Python爬虫神器:PyQuery,解析网页更简单,小白也能学会