java 集合相关 The Collections Framework

本文深入解析Java集合框架,包括其核心接口与实现类,如Collection、Set、List等,探讨不同场景下如何选择合适的数据结构。

这里选择的是JDK 1.6版本的源码,为的是暂时不去纠结一些JAVA的新特性,将关注点放在集合本身。

一 . 整体了解

   有时需要对一组对象进行各种操作。

针对不同的应用场景,需要选择合适的数据结构(比如数组,链表,树),以及一些数据内容本身的特性 
(比如 可重复,不可重复),因为很多内容是重复的,所以官方提供了这个集合框架 

以下是官方给出的说明

The Collections Framework 

集合框架

集合框架是用于表示和操作集合的统一体系结构,使它们能够独立于其表示的细节而被操纵。它减少了编程工作,同时提高了性能 它支持无关API之间的互操作性,减少设计和学习新API的工作量,并促进软件重用。该框架基于十多个集合接口。它包括这些接口和算法的实现来操纵它们。

java提供了两种类型的容器

  • Collection     存储某种元素的集合
  • map             存储键/值对
主要有以下几种

  • Set  用于存储一组不重复的元素
  • List  用于存储一组有序元素
  • Stack   栈    存储后进先出的对象
  • Queue  队列  用于存储先进先出的对象
  • Priority  Queue 用于存储按照优先级顺序处理的对象

一些通用的特性在接口中定义,实现在具体类中


一. interface Iterable<T>  这里只定义了一个接口,返回一个迭代器对象
package java.lang;

import java.util.Iterator;

public interface Iterable<T> {
    Iterator<T> iterator();
}
二 . interface Collection<E>
官方说明:
Collection 层次结构 中的根接口。Collection 表示一组对象,
这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。
一些 collection 是有序的,而另一些则是无序的。JDK 不提供此接口的任何直接 实现:
它提供更具体的子接口(如 SetList)实现。

package java.util;

public interface Collection<E> extends Iterable<E> {
     //返回元素个数
    int size();
         //是否为空
    boolean isEmpty();
          //是否包含某个元素
    boolean contains(Object var1);
     
           //返回一个迭代器对象
    Iterator<E> iterator();
      //返回此collection 的数组
    Object[] toArray();
           
    <T> T[] toArray(T[] var1);
          //增加
    boolean add(E var1);
       //删除
    boolean remove(Object var1);
         //是否包含另一个 collection的所有元素
    boolean containsAll(Collection<?> var1);
          
    boolean addAll(Collection<? extends E> var1);

    boolean removeAll(Collection<?> var1);
         //仅保留此 collection 中那些也包含在指定 collection 的元素
    boolean retainAll(Collection<?> var1);
       //清除
    void clear();
         
    boolean equals(Object var1);

    int hashCode();
}

三. AbstractCollection<E>

官方说明:

此类提供 Collection 接口的骨干实现,以最大限度地减少了实现此接口所需的工作。

要实现一个不可修改的 collection,编程人员只需扩展此类,并提供 iteratorsize 方法的实现。(iterator 方法返回的迭代器必须实现 hasNextnext。)

要实现可修改的 collection,编程人员必须另外重写此类的 add 方法(否则,会抛出 UnsupportedOperationException),iterator 方法返回的迭代器还必须另外实现其 remove 方法。

按照 Collection 接口规范中的建议,编程人员通常应提供一个 void (无参数)和 Collection 构造方法。

此类中每个非抽象方法的文档详细描述了其实现。如果要实现的 collection 允许更有效的实现,则可以重写这些方法中的每个方法。


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值