java 集合浅谈

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了。泛型下次再讲。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值