新浪网股票数据抓取以及存储

    代码附于附件压缩包工程中的stock包中,其他还包括了Demo包中的JDBC增删改查例子。但是存入数据库这部分还未完成,对于stockDate字段,其类型为Date,本想使用List.get()方法将List中的数据取出赋值给一个变量,从而存储在数据库中,但是对于Date类型的数据好像不能直接赋值给变量,故还需寻找解决方法。
     在工程的进行中,还接触到其他许多新的知识:
     1、ArrayList类
   ArrayList实现了可变大小的数组,它允许所有元素,包括null,ArrayList没有同步。 size,isEmpty,get,set方法运行时间为常数,但是add方法开销为分摊的常数,添加n个元素需要O(n)的时间。其他的方法运行时间为线性。 每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小。这个容量可随着不断添加新元素而自动增加,但是增长算法并没有定义。当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。
     2、用Iterator模式实现遍历集合
      典型的用法如下:
   
Iterator it = collection.iterator(); // 获得一个迭代子 
    while(it.hasNext()) { 
      Object obj = it.next(); // 得到下一个元素 
    } 


      Iterator模式是用于遍历集合类的标准访问方法。它可以把访问逻辑从不同类型的集合类中抽象出来,从而避免向客户端暴露集合的内部结构。
      例如,如果没有使用Iterator,遍历一个数组的方法是使用索引:
      for(int i=0; i<array.size(); i++) { ... get(i) ... }
     而访问一个链表(LinkedList)又必须使用while循环:
      while((e=e.next())!=null) { ... e.data() ... }
     为解决以上问题,Iterator模式总是用同一种逻辑来遍历集合:
      for(Iterator it = c.iterater(); it.hasNext(); ) { ... }
     奥秘在于客户端自身不维护遍历集合的"指针",所有的内部状态(如当前元素位置,是否有下一个元素)都由Iterator来维护,而这个Iterator由集合类通过工厂方法生成,因此,它知道如何遍历整个集合。 客户端从不直接和集合类打交道,它总是控制Iterator,向它发送"向前","向后","取当前元素"的命令,就可以间接遍历整个集合。
      首先看看java.util.Iterator接口的定义:
     
 public interface Iterator { 
          boolean hasNext(); 
          Object next(); 
          void remove(); 
      } 

依赖前两个方法就能完成遍历,典型的代码如下:
       
 for(Iterator it = c.iterator(); it.hasNext(); ) { 
          Object o = it.next(); 
          // 对o的操作... 
      } 

在JDK1.5中,还对上面的代码在语法上作了简化:
       
// Type是具体的类型,如String。 
      for(Type t : c) { 
          // 对t的操作... 
      } 

每一种集合类返回的Iterator具体类型可能不同,Array可能返回ArrayIterator,Set可能返回SetIterator,Tree可能返回TreeIterator,但是它们都实现了Iterator接口。

你可能感兴趣的:(数据结构,C++,c,算法,C#)