java集合类框架

来源:互联网 发布:苹果一键开启蜂窝数据 编辑:程序博客网 时间:2024/06/05 18:07
集合类的由来:
    对象用于封装特有数据,对象多了需要存储,如果对象的个数不确定
    就是用集合容器存储。
    
集合的特点:
1、用于存储对象的容器
2、集合的长度是可变的
3、集合中不可存储基本数据类型值


集合容器因为内部的数据结果不同,有多种具体容器;
不断的向上抽取,就形成和集合框架。


框架的顶层就是Collection接口


1、添加
    boolean add(Object obj)
    boolean addAll(Collection e)
    
2、删除
boolean remove
boolean removeAll
void clear();


3、判断
boolean contains(object obj)
boolean containsAll(Collection e)
boolean isEmpty()

4、获取
int size();
Iterator iterator():获取元素的方式,迭代器
该对象必须依赖具体的容器,因为每一个容器的数据结构都不相同,
所以该iterator对象的实现是在容器内部实现的(即内部实现Iterator接口);
对于使用容器者而言,具体的实现不重要。只要通过容器获取该容器的迭代器对象即可;
也就是iterator方法;

5、 其他:
retailAll(Collection coll):去交集;保留和指定集合中相同元素到当前集合中,删除不同元素,和removeAll 功能相反,
object[] toArray():将集合转换成数组



迭代器:
Iterator it 迭代器;
1、方法:
hasNext();
next();
remove();

通过迭代器获取集合元素:


for(Iterator it = coll.iterator; it.hasNext();){

System.out.println(it.next());


}


2、注意:
在使用迭代器过程中,不要使用集合操作元素,容易出现并发修改异常;
可以使用Iterator子接口实现在迭代过程中对几何元素更多的操作。
目前Iterator实现的子接口中只有List集合对应的列表迭代器ListTterator接口,方法listIterator();



--------------------------------------


Collection接口的具体实现
List : 有序,元素都有索引(角标),元素可以重复
Set:元素不能重复

List:特有的常见方法:有一个共性特点就是都可以操作角标;只有list集合支持对元素进行增删改查的操作 


1、添加
add(int index,element);
add(int index,collection);


2、删除
object remove(index);


3、修改
object set(index,element);
返回被修改对象

4、获取
object get(index)
int indexOf(object):返回对象object角标位置
int lastIndexOf(object):反向索引object角标位置
List subList(from,to )

List:常用子类
|--Vector:内部是可变数组数据结构。Vector是同步的,即线程安全的;1.1版本出现,1.2版本升编到了集合框架中,;
增删改查,速度都很慢
|--ArrayList:内部是可变数组数据结构,是不同步的,线程不安全;1.2版本出现,替代了Vector
特点:增删改的速度很慢,牵一发而动全身;但是查询的速度很快,连续的空间内查找
|--LinkedList:List接口的连接列表实现,内部是链表数据结构,非同步的。 特点:增删元素的速度
  特别快;如果需要对容器进行频繁的增删改,可以考虑使用LinkedList;查询速度很
  慢,因为所在空间不连续

可变长度数组原理:创建一个固定长度的数组,当不满足需求时,创建一个新的较长的数组,将原数组复制到新数组中,以此类推;
而长度的增长依据该容器的数据类型;例如Vector:100%延长;ArrayList:50%延长;因此使用ArrayList替代
Vector,因为效率高并节省空间;在多线程程序中也不推荐使用Vector,使用ArrayList并将数组的增删改查同步
原创粉丝点击