现在的位置: 首页 > 综合 > 正文

JAVA中的容器arraylist

2018年04月26日 ⁄ 综合 ⁄ 共 1355字 ⁄ 字号 评论关闭

Java中的容器 ArrayList
学习、使用java中的容器,应改了解以下这些问题
1,容器的作用
2,与其它容器的区别
3,知识点

先说一:(作用是简单的,到处都能看到,不详说)
首先要知到容器的作用,知到了作用才能开始使用它,首先我们应改知到ArrayList是一个容器,你可以往里边
放任何的object(object的意思就使说基础类型不行了,不过可以放基础类型对应的类).所以当你有很多对象
须要保存的时候,可以选择它)

二:这个是比较总要的,因为学会使用一个容器是很容易的,恰当的使用才是重要的。
对比Hashet ArrayList LinkedList
这些都是比较常见的,在什么情况下选择哪个呢,那首先了解一下他们的实现
HashSet基于HashMap的,HashMap是利用hash表实现的一个key-value的映射
LinkedList是基于链表的。
ArrayList是基于数组的

    优点                      缺点
HashSet    保正无重复,随机读取快         插入时消耗大,无序
ArrayList  插入快,按照index读取快    删除或者无序插入慢
LinkedList 插入,删除快        随机读取慢
知到了上边的这些,那么我们就可以来选择了。根据自己的需求,选择相应的容器

三:每个类库的使用,都有一些须要注意的地方,用的好了能够优化性能。首先看一下ArrayList的实现
实现里边有个重要的函数,就使在长度不够的时候的扩充和无参构造函数
public ArrayList() {
 this(10);
    }
无参构造函数告诉我们,默认ArrayList的长度是10个   
public void ensureCapacity(int minCapacity) {
 modCount++;
 int oldCapacity = elementData.length;
 if (minCapacity > oldCapacity) {
     Object oldData[] = elementData;
     int newCapacity = (oldCapacity * 3)/2 + 1;
         if (newCapacity < minCapacity)
  newCapacity = minCapacity;
     elementData = (E[])new Object[newCapacity];
     System.arraycopy(oldData, 0, elementData, 0, size);
 }
}
扩充函数告诉我们扩充的算法是(oldCapacity * 3)/2 + 1
同时,如果我们在使用ArrayList的时候知到了须要存放的对象的个数,在初始化ArrayList的是否,不妨加上
参数new ArrrayList(200);这样,ArrayList不许要一次次的扩充,一次次的拷贝,对性能提高是有帮助的。

然後看到jdk1.5中添加的新东西,其实应改不算新了。很像c++中的template
jdk1.5中加入了泛型,如下使用。
ArrayList<String> strList = new ArrayList<String>();
另外如果想更深入的了解泛型,候捷有一篇文章,讲的很详细
google 候捷 jdk1.5 泛型 就能找到

 

抱歉!评论已关闭.