一、Vector与ArrayList讲解
* 用到了向量Vector 可以参照ArrayList的用法 ,他们用法基本一样。
* 区别: Vector是线性安全的,还有连个空间的增长长度方式不一样。
* Vecrot是每次增加原来的一倍,ArrayList是每次增加原来的一半。
二、Stringbuffer和StringBuilder和String
多线程的情况下才需要考虑线程安全问题。比如一个 StringBuilder ,可能被多个线程访问,那么如果没有 synchronized 的话,第一个线程改变了其值,之后又有第二个线程改变了它的值。当切换回第一个线程时,读到的就是第二个线程修改后的值了。
如果不考虑多线程, StringBuilder 比StringBuffer要快。
StringBuffer安全吧
果然是StringBuffer。这样的话这段代码就不太好了……
首先,如果你使用的JDK版本在1.5或以上的话,StringBuffer已经不推荐使用了,由StringBuilder所替代。后者的性能跟更好一些。
其次,你在拼接完字符串之后,如果在实际代码里就跟问题里给出的代码一样,紧接着就做String.split()的话,那就浪费了。用实现了List接口的容器(ArrayList或者LinkedList)来保存中间结果不就好了么,没有必要拼接起来再分开
- ArrayList<Double> tempList = new ArrayList<Double>();
- while (it.hasNext()) {
- Object[] obj = (Object[])it.next();
- tempList.add(Double.parseDouble(obj[2].toString()));
- // 不知道obj[2]里原本是什么,如果是double的话那直接强制转换类型就好了
- } // 取得记录
- double[] dArray = new double[tempList.size()];
- for (int i = 0; i < dArray.length; ++i) {
- dArray[i] = tempList.get(i);
- } // 得到一行数据对应的double数组
当然如果你拼接起来是有别的用途,例如说存到数据库或者存到文本文件的话,那拼接成字符串也不是不行……
然后double[][]数组的意义。从你的代码看,你是想把一个一维的double数组硬塞到一个二维的double数组里(你的代码里虽然定义了一个len*len的矩阵,却只向其第一行填充了值)。请问你确定这么做是符合你的要求的么?JFreeChart的CategoryDataset需要的数据到底是什么,恐怕你得自己查一下文档去了解一下。有个朋友以前做过一个作业用过JFreeChart的XYPlot,可以看看他是怎么用数据的:http://ravenex.iteye.com/blog/175557(JFreeChart相关的代码在那帖的附件里)
<!--EndFragment-->
<!--EndFragment-->