java 关于集合的描述_java关于常用集合的介绍

AAffA0nNPuCLAAAAAElFTkSuQmCC

AAffA0nNPuCLAAAAAElFTkSuQmCC

AAffA0nNPuCLAAAAAElFTkSuQmCC

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

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 list =new ArrayList();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 map =new HashMap();1112map.put(1,"白菜");13map.put(2,"萝卜");14map.put(3,"茄子");15map.put(4,null);16map.put(null,null);17map.put(null,null);1819System.out.println("map.size()="+map.size());20System.out.println("map.containsKey(1)="+map.containsKey(2));21System.out.println("map.containsKey(null)="+map.containsKey(null));22System.out.println("map.get(null)="+map.get(null));2324System.out.println("map.get(2)="+map.get(2));25map.put(null,"黄瓜");26System.out.println("map.get(null)="+map.get(null));2728Set set = map.keySet();29System.out.println("set="+set);3031Collection c = map.values();3233System.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类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值