为了账号安全,请及时绑定邮箱和手机立即绑定

java关于常用集合的介绍

标签:
Android

5baf8a3e0001514105650553.jpg

5baf8a3f000152cb05320342.jpg

spacer.gif

 以上是常用的类的图表结构


Collection是List和Set两个接口的基接口 
List在Collection之上增加了"有序" (按照顺序排列,可以重复)
Set在Collection之上增加了"唯一" (没有按照顺序排列,但是不可以重复)
Collection和Map接口之间的主要区别在于:Collection中存储了一组对象,而Map存储关键字/值对。


好下面口水话讲解一下:


集合就是这样一种数组:动态的改变其大小,要就添加,不要就删除。

对集合的运用就是  增  删  改  查。


主要集中类的详解:


List结构的集合类:

ArrayList类,LinkedList类,Vector(向量类),Stack(栈类)

方法运用都是一样的:

add(E e)将指定对象添加到集合中
remove(Object o)将指定的对象从集合中移除,移除成功返回true,不成功返回false
contains(Object o)查看该集合中是否包含指定的对象,包含返回true,不包含返回flase
size()返回集合中存放的对象的个数。返回值为int
clear()移除该集合中的所有对象,清空该集合。
iterator()返回一个包含所有对象的iterator对象,用来循环遍历
toArray()返回一个包含所有对象的数组,类型是Object
toArray(T[] t)返回一个包含所有对象的指定类型的数组

举列子如下:


List<String> list = new ArrayList<String>();
02list.add("nihao!");
03list.add("hi!");
04list.add("konikiwa!");
05list.add("hola");
06list.add("Bonjour");
07System.out.println(list.size());
08System.out.println(list.contains(21));
09System.out.println(list.remove("hi!"));
10System.out.println(list.size());

他们之间的区别:


常用的几个集合类(介绍)

ArrayList类,LinkedList类:

基本没有区别,就是LinkedList类在添加的时候,可以指定往前面加 addfirst(),或者后面加 addlast();


ArrayList类,Vector(向量类):

1.Vector(向量类)是同步的(以后会介绍),安全,但是速度相对慢。

2.当往里面增加数据的时候,Vector(向量类)是按照倍数增加大小,比如存2个,那么下次就增加4个单位。

但是ArrayList类是按照50%增加的。

3.所以当有大量的数据需要存储的时候,选用Vector(向量类),不必反复的增加资源大小。浪费时间。


ArrayList类,Stack(栈类):

就是添加的时候顺序一个是按照顺序加,一个是往前加((栈类));


Map接口:

主要有HashMap,与Hashtable

其实跟List的用法差不多,不过多了个键值对的出现,所以在添加或者查询遍历的时候要用到迭代器。


用法如下:

put(K key, V value)向集合中添加指定的键值对
putAll(Map <? extends K,? extends V> t)把一个Map中的所有键值对添加到该集合
containsKey(Object key)如果包含该键,则返回true
containsValue(Object value)如果包含该值,则返回true
get(Object key)根据键,返回相应的值对象
keySet()将该集合中的所有键以Set集合形式返回
values()将该集合中所有的值以Collection形式返回
remove(Object key)如果存在指定的键,则移除该键值对,返回键所对应的值,如果不存在则返回null
clear()移除Map中的所有键值对,或者说就是清空集合
isEmpty()查看Map中是否存在键值对
size()查看集合中包含键值对的个数,返回int类型


举列子如下:

Map<Integer,String> map = new HashMap<Integer,String>();
11
12        map.put(1, "白菜");
13        map.put(2, "萝卜");
14        map.put(3, "茄子");
15        map.put(4, null);
16        map.put(null, null);
17        map.put(null, null);
18
19        System.out.println("map.size()="+map.size());
20        System.out.println("map.containsKey(1)="+map.containsKey(2));
21        System.out.println("map.containsKey(null)="+map.containsKey(null));
22        System.out.println("map.get(null)="+map.get(null));
23
24        System.out.println("map.get(2)="+map.get(2));
25        map.put(null, "黄瓜");
26        System.out.println("map.get(null)="+map.get(null));
27
28        Set set = map.keySet();
29        System.out.println("set="+set);
30
31        Collection<String> c = map.values();
32
33        System.out.println("Collection="+c);
34


HashMap 当需要键值对表示,又不关心顺序时可采用HashMap。

Hashtable 注意Hashtable中的t是小写的,它是HashMap的线程安全版本,现在已经很少使用。

LinkedHashMap 当需要键值对,并且关心插入顺序时可采用它。


HashMap允许放入空值,但是Hashtable不可以。


综合上面有以下几点常用集合的运用:

1.要求线程安全:用 Vector类,Hashtable类

2.不要求线程安全,要效率:ArrayList类,LinkedList类,HashMap;

3.要求键值对:HashMap,Hashtable;

4.如果要求数据量大,又要线程安全:用 Vector类

原文链接:http://www.apkbus.com/blog-846519-61850.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消