Java基础——Collection接口

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

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

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


Java基础——Collection接口_第1张图片

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

你可能感兴趣的:(list,set,map,Collection,JAVA容器)