Java基础——Collection接口

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/details/51245741

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

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

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

  如上图,我们常用的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接口》】

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏算法修养

2016天梯模拟赛 进阶题解

L2-005 集合相似度 题目链接: https://www.patest.cn/contests/gplt/L2-005 题目的意思是要求两个集合的交集中...

43990
来自专栏小怪聊职场

Java|Map、List与Set的区别

591120
来自专栏塔奇克马敲代码

第 11 章 关联容器

21040
来自专栏Bingo的深度学习杂货店

Q35 Search Insert Position

Given a sorted array and a target value, return the index if the target is found...

30870
来自专栏AILearning

Map集合

Collection |--List:元素是有序的,元素可以重复,因为该集合体系有索引 |--ArrayList:底层的数据结构使用的是数据结构。特点:查询...

25360
来自专栏Java爬坑系列

【Java入门提高篇】Day20 Java集合类详解(三)List接口

  今天要说的是Collection族长下的三名大将之一,List,Set,Queue中的List,它们都继承自Collection接口,所以Collectio...

25470
来自专栏Kevin-ZhangCG

[ Java面试题 ] 集合篇

21170
来自专栏向治洪

java 之容器

在Java中,我们想要保存对象可以使用很多种手段。我们之前了解过的数组就是其中之一。但是数组具有固定的尺寸,而通常来说,程序总是在运行时根据条件来创建对象,我们...

28980
来自专栏从零开始学 Web 前端

07 - JavaSE之容器

Collection 接口的子接口分为:Set接口(包含 HashSet类) + List接口(包含LinkedList 类和 ArrayLis t类) Ma...

10320
来自专栏用户2442861的专栏

Java中如何遍历Map对象的4种方法

既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHashMap, Hashtabl...

15610

扫码关注云+社区

领取腾讯云代金券