Java基础——Collection接口

  之前写过一篇文章《【J2SE快速进阶】——数组(及其内存分析 )》,在Java编程中,经常会用数组来装载数据,但是数组一个致命的缺点就是一旦初始化,就无法更改长度。

  除了数组,Java还给我们提供了各种形式的容器,用来“盛放”数据。

  Java提供的容器大致有两种,一种继承自Collection(如我们常用的List、Set),另一种继承自Map。

![这里写图片描述](https://img-blog.csdnimg.cn/img_convert/8a8270d6af6c7f61d5ad008310dc1176.png)

  如上图,我们常用的Set和List两个接口作为“两大派别”都继承自Collection接口。这里说一下Set家族。

  Set和List两者最大的区别是:Set中的内容是不能重复并且无序的;List中的内容是可以重复并且有序的。这里判断重复的条件是:往容器中添加对象时,如果新添的对象与容器中已有的某个对象equals,则重复,这时add()方法会返回false,否则返回true。(如果对equals不理解可以参考《【J2SE快速进阶】——Java中的equals和==的区别》

  比如:

	List list=new ArrayList();
	Set set=new HashSet();
	list.add("hello");
	set.add("hello");
	System.out.println(list.add("hello"));//输出为true  
	System.out.println(set.add("hello"));//输出为false  

  Collection提供了如下方法:

方法名返回类型说明
size()int返回容器大小(所装对象个数)
clear()void清空容器
isEmpty()boolean判断是否为空
contains(Object o)boolean判断容器中是否包含指定对象
add(Object o)boolean添加对象
remove(Object o)boolean移除指定对象
iterator()Iterator返回Iterator对象
containsAll(Collection c)boolean判断容器中是否包含指定容器包含的所有对象
addAll(Collection c)boolean添加指定容器包含的所有对象
removeAll(Collection c)boolean移除指定容器中包含的所有对象
retainAll(Collection c)boolean只保留指定容器中包含的对象
toArray([ T[] a ])Object[]返回包含容器中所有对象的数组
  上述方法中,contains()、containsAll()、add()、addAll()、remove()、removeAll()这几个方法在执行的时候,判断对象是否存在、是否相等,都是依据equals方法来寻找、比较对象。因此可以根据需要来重写对象的equals方法,需要注意的是,重写对象equals方法的同时,也一定要重写hashCode方法。

  后面陆续对Collection子接口及其实现类进一步探讨。


【 转载请注明出处——胡玉洋《Java基础——Collection接口》

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值