关闭

Vector与ArrayList,Stringbuffer和StringBuilder和String

537人阅读 评论(0) 收藏 举报
分类:

一、VectorArrayList讲解

 * 用到了向量Vector 可以参照ArrayList的用法 ,他们用法基本一样。

 * 区别: Vector是线性安全的,还有连个空间的增长长度方式不一样。

 * Vecrot是每次增加原来的一倍,ArrayList是每次增加原来的一半。

二、Stringbuffer和StringBuilder和String

多线程的情况下才需要考虑线程安全问题。比如一个 StringBuilder ,可能被多个线程访问,那么如果没有 synchronized 的话,第一个线程改变了其值,之后又有第二个线程改变了它的值。当切换回第一个线程时,读到的就是第二个线程修改后的值了。

 

如果不考虑多线程, StringBuilder StringBuffer要快。

 

 

 

StringBuffer安全吧

 

 

果然是StringBuffer。这样的话这段代码就不太好了…… 

首先,如果你使用的JDK版本在1.5或以上的话,StringBuffer已经不推荐使用了,由StringBuilder所替代。后者的性能跟更好一些。 

其次,你在拼接完字符串之后,如果在实际代码里就跟问题里给出的代码一样,紧接着就做String.split()的话,那就浪费了。用实现了List接口的容器(ArrayList或者LinkedList)来保存中间结果不就好了么,没有必要拼接起来再分开 

Java代码  收藏代码
  1. ArrayList<Double> tempList = new ArrayList<Double>();  
  2. while (it.hasNext()) {  
  3.   Object[] obj = (Object[])it.next();  
  4.   tempList.add(Double.parseDouble(obj[2].toString()));  
  5.   // 不知道obj[2]里原本是什么,如果是double的话那直接强制转换类型就好了  
  6. // 取得记录  
  7.   
  8. double[] dArray = new double[tempList.size()];  
  9. for (int i = 0; i < dArray.length; ++i) {  
  10.     dArray[i] = tempList.get(i);  
  11. // 得到一行数据对应的double数组  


当然如果你拼接起来是有别的用途,例如说存到数据库或者存到文本文件的话,那拼接成字符串也不是不行…… 

然后double[][]数组的意义。从你的代码看,你是想把一个一维的double数组硬塞到一个二维的double数组里(你的代码里虽然定义了一个len*len的矩阵,却只向其第一行填充了值)。请问你确定这么做是符合你的要求的么?JFreeChart的CategoryDataset需要的数据到底是什么,恐怕你得自己查一下文档去了解一下。有个朋友以前做过一个作业用过JFreeChart的XYPlot,可以看看他是怎么用数据的:http://ravenex.iteye.com/blog/175557(JFreeChart相关的代码在那帖的附件里)

 

<!--EndFragment--> 

 

<!--EndFragment-->
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:27432次
    • 积分:411
    • 等级:
    • 排名:千里之外
    • 原创:68篇
    • 转载:5篇
    • 译文:3篇
    • 评论:1条
    文章分类
    最新评论