JavaSE复习总结之集合(Collection)

Java早期版本只给集合类库提供了很少的一组类,但是随着Java版本的升级,Java集合类库越来越充实。集合类库里面存放的,是各式各样的数据容器,我们基本都学过数据结构这门课,数据结构所讲的就是ADT(抽象数据模型)的部分,数据结构不是针对于某一门语言,它所讲的通常是对各语言都通用的ADT部分,ADT和具体实现是没有关系的。但是根据教材、根据各专业的不同,各专业会选用使用不同编程语言实现的教材。而我们所讲的,就是如何使用Java数据容器,即Java集合(用Java实现的ADT),具体的实现部分,我将在算法与数据结构中进行阐述。

我们在知道如何使用它们之前,首先要对他们的原理有大致的了解。

Java集合类库将接口和实现分离。首先,看一下Queue队列是怎么分离的。

interface Queue<E>
{
    void add (E element);
    E remove();
    int size();
}

Queue<E> 是泛型方面的内容,我将在下一篇JavaSE的总结中给出。现阶段只需要明白,Queue<String> 代表的就是在该队列中只能存放String类型的对象,泛型进行了类型限定的作用。将接口与实现分离,是现代程序设计的有效的解耦方式之一。

在Java类库中,集合类的基本接口是Collection,而Collection接口又继承了iterator接口

public interface iterator<E>
{
    E next();
    boolean hasNext();
    void remove();
}

public interface Iterable<E>
{    
    Iterator<E> iterator();
}

public interface Collection<E> extends iterable<E>
{
    boolean add(E element);
    Iterator<E> iterator();
    //..
}

所有实现了iterable接口的类,都代表着该类是“可迭代的”,可以调用该类的iterator()方法,返回该类的迭代器,通过调用迭代器的next()方法来遍历该类。

值得注意的是,当遍历到最后一个元素时,如果继续调用next()方法,将会抛出一个异常:NoSuchElementException,因此我们通常是这么调用的:

Collection<String> c = ....;
Iterator<String> it = c.iterator();
while(it.hasNext)
{
    String s = it.next();
    do something with s;
}

还有一点就是, 从JavaSE1.6开始所有实现iterable接口的类都可以使用一种加强型的for循环:

for(String s: c)
{
    do something with s;
}

看到这里也许你会发现,Java类库中提供了这些接口及其实现,但是如果我们需要自己实现一个Queue,那岂不是很麻烦?

实际上Java类库设计了一组抽象类,AbstractCollection等等,实际的实现者无需实现所有的例行方法,大大减轻了负担。

 

image

 

Java集合类库中的集合主要分为以下几种:

1.List(表)

2.Set(集)

3.Map(图…对翻译无力吐槽,我更喜欢称之为映射)

Set

       Set接口继承于Collection接口,它没有提供额外的方法,但实现了Set接口的集合类中的元素是无序且不可重复。

       特征:无序且不可重复。

List

        List接口同样也继承于Collection接口,但是与Set接口恰恰相反,List接口的集合类中的元素是对象有序且可重复。

       特征:有序且可重复。

       两个重要的实现类:ArrayList和LinkedList

       1.ArrayList特点是有序可重复的

       2.LinkedList是一个双向链表结构的。

Map

       Map也是接口,但没有继承Collection接口。该接口描述了从不重复的键到值的映射。Map接口用于维护键/值对(key/value pairs)。

特征:它描述了从不重复的键到值的映射。

两个重要的实现类:HashMap和TreeMap

       1.HashMap,中文叫散列表,基于哈希表实现,特点就是键值对的映射关系。一个key对应一个Value。HashMap中元素的排列顺序是不固定的。更加适合于对元素进行插入、删除和定位。

       2.TreeMap,基于红黑书实现。TreeMap中的元素保持着某种固定的顺序。更加适合于对元素的顺序遍历。

 

Collections算法类:

Collections是一个算法类,提供一系列静态方法,实现对集合的查找、排序、替换、线程安全化等操作,具体的可以参考以下:

http://www.360doc.com/content/14/0829/10/15242507_405537400.shtml

转载于:https://www.cnblogs.com/butter-fly/p/5322990.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值