扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
样例源代码
清单 1 展示了 StockData 程序的源代码:
清单 1. StockData
public class StockData { private static Log log; public static void main(String[] args) { System.setProperty("log4j.configuration", "file:log4j.properties"); log = LogFactory.getLog(StockData.class); try { String symbol = args[0]; String csvFile = args[1]; String query = args[2]; // open store, uses HSQLDB driver and memory only database Store store = new Store("org.hsqldb.jdbcDriver","jdbc:hsqldb:mem:stockdata"); // read csv and generate beans List historicalData = FileUtils.readLines(new File(csvFile), "UTF-8"); // remove first line (header) historicalData.remove(0); // store beans to database for (Object _data : historicalData) { String[] data = ((String) _data).split(","); StockBean bean = new StockBean(symbol, data[0], Double.parseDouble(data[4]), Double.parseDouble(data[5])); //save stock bean to database store.save(bean); } // find beans that match query List results=store.find(query); // print beans that matched System.out.println("Total results: "+results.size()); for (Object object : results) { StockBean bean=(StockBean)object; System.out.println(bean.toString()); } } catch (Exception e) { log.error(e.getMessage(), e); System.out .println("Usage: java sample.StockData " + "<symbol name> <historical prices file> <query>"); } } } |
StockData 应用程序使用 Apache Commons IO 包将 CSV 文件读入 List。然后,for 循环解析文本行并创建 StockBean 对象,该对象被存入数据库中。CSV 文件的格式如下:
Date,Open,High,Low,Close,Volume,Adj. Close*
29-Dec-06,97.00,97.88,96.83,97.15,4455900,97.15
28-Dec-06,97.11,97.40,96.87,96.97,4501700,96.97
27-Dec-06,96.30,97.23,96.27,97.20,4571600,97.20
可下载演示包 中提供了一个样例 CSV 文件。
将所有对象存入数据库后,会执行一个简单的 find 查询(在命令行中指定)并返回一份相匹配结果的 List。结果打印到 System.out。请注意,Simple Persistence for Java 实现 LazyList,对象可在 LazyList 中随需检索。这确保了内存中最终不会出现成千上万的对象。
StockBean 对象
清单 2 展示了 StockBean Java 对象的源代码,该代码用于存储 StockData 中的信息。StockBean 有四个字段:symbol name、date、price 和 volume。
清单 2. StockBean 对象
public class StockBean { private String symbolName = ""; private String date = null; private double price = 0.0; private double volume = 0.0; public StockBean() { // no-argument constructor required by Simple Persistence } public String toString() { StringBuffer sb=new StringBuffer(); sb.append(symbolName); sb.append(','); sb.append(date); sb.append(','); sb.append(price); sb.append(','); sb.append(volume); return sb.toString(); } public StockBean(String symbolName, String date, double price, double volume) { this.symbolName = symbolName; this.date = date; this.price = price; this.volume = volume; } public String getDate() { return date; } public void setDate(String date) { this.date = date; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public String getSymbolName() { return symbolName; } public void setSymbolName(String symbolName) { this.symbolName = symbolName; } public double getVolume() { return volume; } public void setVolume(double volume) { this.volume = volume; } } |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者