您的位置:首页 > 编程语言 > Java开发

java 集合浅谈

2014-12-12 19:28 162 查看
collection是最基本的集合接口。由collection派生的两个接口分别是List和Set。

实现List接口的都是是有序的集合,其常见的有ArrayList、LinkedList、Vector

这三个集合都可以像数组一样查询和修改集合中的元素。但是他们也都有

collection接口必备的iterator()方法,即迭代器的使用。

ArrayList:

实现了可变大小的数组,其中的元素是有序的,即遵从你插入的顺序

,允许null元素。其中有size()方法,即集合中元素的个数,与数组的length一

样。其同样可以和数组一样通过下标来操作元素。remove()方法是移除其中的某

个元素,clear()方法是移除所有的元素。插入数据多的时候可能会有点慢。没有

同步方法!其增长率为50%,即元素满了后自动增长原先的一半的空间。

LinkedList:

LinkedList实现了List接口,也允许null元素。此外LinkedList提

供额外的get,remove,insert方法在 LinkedList的首部或尾部,方便插入数据。

所以其插入数据要比ArrayList要快,因其是实现了链表的数据结构,但是查找

数据没有ArrayList快,也没有同步方法。

Vector:

Vector与ArrayList几乎一样,但是它是同步的,安全性比较高。自动增长率为

100%,即元素放满以后会自动增长为原来的一倍。

同步即意味着同一时刻只能由一个线程操作它,其他线程只能等待。多线程时

保证了数据的安全。所以如果考虑安全性就使用Vector,如不考虑安全性,考虑

效率,则用ArrayList或LinkList。ArrayList查找数据比LinkList快,Vector与

ArrayList查找速度是一样的,但LinkList插入数据快。Vector在使用大数据

时候有一定的优势。这个自己依实际情况考虑使用。

Set是一种不包含重复元素的集合(可以用其去除重复的数据),set最多有一个

null元素,而且其是没有一定顺序的,不会按照你插入的顺序进行存储,所以遍历

Set要使用iterator()方法,即使用迭代器遍历整个集合。

Iterator it = set.iterator();//获取迭代器
while(it.hasNext()){//判断有没有下一个
System.out.print(it.next());//取出下一个元素并打印
}


Map没有继承collection接口,Map有一对键值,key和value,他们两个一一对应,

具有映射关系,不能有重复的key,当插入的值的key一样时,后插入的数据会覆

盖前插入的数据。

HashMap实现了Map接口,允许null数据,即null value和null key。添加数据使

用的是put(key,value),获取数据是get(key),它里面也是无序的,遍历其

集合稍稍有点麻烦。也是使用iterator()方法,步骤如下:

Iterator it = set.iterator();
while(it.hasNext()){
Object key = it.next();
Object value = hashmap.get(key);
System.out.print(value);

}

map可以用于存储用户名和密码这一类的有两个对应关系的数据,可以很方便的查询

到是用户名还是密码错误。

要知道无论实现了List还是Map接口的集合都是可以存储任何类型的数据,故其返

回的也是一个Object类型,在使用时候要注意类型转换!如果使用了泛型的话,就

可以在最后不用强转类型。如果没有使用泛型,则在取出集合中的数据并赋值给某

个变量时候要注意类型的转换!!如上面那段代码改一下,

Iterator it = set.iterator();
while(it.hasNext()){
Object key = it.next();
int value =(int) hashmap.get(key);
System.out.print(value);

}
上面代码的第四行,HashMap输出的是一个Object类型。要把它赋值给一个int,

就必须在前面强制转换类型,但如果我不知道集合里存的是什么数据时候呢?那你

只能用Object了。泛型下次再讲。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: