两个月之前准备软考时,简单的从理论上总结了最经常使用的数据结构和算法,比方:线性表链表。在进行java开发时,jdk为我们提供了一系列对应的类来实现主要的数据结构。jdk所提供的容器API位于java.util包内。本文主要是通过简单的介绍Collection集合,向读者简单阐述各个类的基本定义以及其作用,为后面的学习做一下铺垫。

首先,我们先看一下Collection集合的基本结构:

1、Collection接口

Collection是最基本集合接口,它定义了一组同意反复的对象。Collection接口派生了两个子接口Set和List,分别定义了两种不同的存储方式,例如以下:

2、 Set接口

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

特征:无序且不可反复。

3、  List接口

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

特征:有序且可反复。

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

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

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

4、Map接口

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

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

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

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

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

5、Iterator接口

Iterator接口,在C#里有例外一种说法IEnumerator,他们都是集合訪问器,用于循环訪问集合中的对象。

      全部实现了Collection接口的容器类都有iterator方法,用于返回一个实现了Iterator接口的对象。Iterator对象称作迭代器,Iterator接口方法能以迭代方式逐个訪问集合中各个元素,并能够从Collection中除去适当的元素。

<span style="font-size:10px;">Iterator it = collection.iterator(); // 获得一个迭代子
while(it.hasNext())
{
Object obj = it.next(); // 得到下一个元素
} </span>

6、Comparable接口

Comparable能够用于比較的实现,实现了Comparable接口的类能够通过实现comparaTo方法从而确定该类对象的排序方式。

总结

Collection集合分别派生自Collection和Map接口,Collection有两个经常使用子接口List和Set,分别表示有序可反复,无序不可反复的集合。而Map存储的是key-value的映射。

上面的总结看上去非常多,非常繁琐,事实上你仅仅要记得一点:collection是用于处理各种数据结构的,依据各种数据结构的特点理解,一切都会变简单。

尽管此博客有点糙,也希望能帮助你对集合的理解有一点点作用(尤其是对组织中人)。以下的博文,我会更新一些有关线程的基础知识,请继续关注。

【java读书笔记】——Collection集合之六大接口(Collection、Set、List、Map、Iterator和Comparable)的更多相关文章

  1. Collection集合之六大接口(Collection、Set、List、Map、Iterator和Comparable)

    首先,我们先看一下Collection集合的基本结构: 1.Collection接口 Collection是最基本集合接口,它定义了一组允许重复的对象.Collection接口派生了两个子接口Set和 ...

  2. head first java读书笔记

    head first java读书笔记 1. 基本信息 页数:689 阅读起止日期:20170104-20170215 2. 标签 Java入门 3. 价值 8分 4. 主题 使用面向对象的思路介绍J ...

  3. Java学习笔记之---集合

    Java学习笔记之---集合 (一)集合框架的体系结构 (二)List(列表) (1)特性 1.List中的元素是有序并且可以重复的,成为序列 2.List可以精确的控制每个元素的插入位置,并且可以删 ...

  4. Thinking In Java读书笔记--对象导论

    Thinking In Java读书笔记--对象导论[对象]服务提供者==>将对象看做一个服务提供者[程序员分类][类创造者]/[客户端程序员] [访问控制存在的原因?][1]客户端程序员无法触 ...

  5. java学习笔记之集合家族2

    集合体系 一.数据结构 List集合储存数据结构 <1>堆栈结构 特点:先进后出 <2>队列结构 特点:先进先出 <3>数组结构 特点:查询快,增删慢 <4& ...

  6. think in java 读书笔记 3 —— 数据报

    目录 think in java 读书笔记 1 ——移位 think in java 读书笔记 2 —— 套接字 think in java 读书笔记 3 —— 数据报 概要 1. 数据报基本知识 2 ...

  7. think in java 读书笔记 2 —— 套接字

    目录 think in java 读书笔记 1 ——移位 think in java 读书笔记 2 —— 套接字 think in java 读书笔记 3 —— 数据报 概要 1. 套接字基本知识 2 ...

  8. think in java 读书笔记 1 ——移位

    目录 think in java 读书笔记 1 ——移位 think in java 读书笔记 2 —— 套接字 think in java 读书笔记 3 —— 数据报 在Think in Java中 ...

  9. Java设置的读书笔记和集合框架Collection API

    一个.CollectionAPI 集合是一系列对象的聚集(Collection). 集合在程序设计中是一种重要的数据接口.Java中提供了有关集合的类库称为CollectionAPI. 集合实际上是用 ...

随机推荐

  1. 精通CSS高级Web标准解决方案(1-3 规划、组织与维护样式表)

    对文档应用样式 对代码进行注释/*......*/ 结构性注释 自我提示 删除注释.优化样式表 样式指南:解释代码与站点的视觉设计是如何组织在一起的 站点结构.文件结构.命名规则 编码标准:(X)ht ...

  2. XeLaTeX插入GB/T 7714-2005规范的参考文献方法

        GB/T 7714-2005 biblatex 在使用XeLaTeX的过程中,会遇到参考文献需要按照GB/T 7714-2005规范的情况.此时需要使用biblatex宏包,并且指定包的参数为 ...

  3. SVM用于线性回归

    SVM用于线性回归 方法分析 在样本数据集()中,不是简单的离散值,而是连续值.如在线性回归中,预测房价.与线性回归类型,目标函数是正则平方误差函数: 在SVM回归算法中,目的是训练出超平面,采用作为 ...

  4. Educational Codeforces Round 20 B. Distances to Zero

    B. Distances to Zero time limit per test 2 seconds memory limit per test 256 megabytes input standar ...

  5. Spring配置文件中使用ref local与ref bean的区别

    Spring配置文件中使用ref local与ref bean的区别.在ApplicationResources.properties文件中,使用<ref bean>与<ref lo ...

  6. iOS启动动画效果实现

    原理 在window上加一个UIImageView它的图片和启动图的图片一样,然后再调整动画 运行展示 demo百度云连接:http://pan.baidu.com/s/1c0QcYu0 more:网 ...

  7. 【Luogu】P3159交换棋子(超出我能力范围的费用流)

    题目链接 明显超出我能力范围. 只放题解. 再放代码. #include<cstring> #include<algorithm> #include<cstdio> ...

  8. 【Visual Studio】error LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1600”不匹配值“1800” (转)

    1.案例一 _MSC_VER 定义编译器的版本.下面是一些编译器版本的_MSC_VER值:MS VC++ 10.0 _MSC_VER = 1600MS VC++ 9.0 _MSC_VER = 1500 ...

  9. Linux Malloc分析-从用户空间到内核空间【转】

    转自:http://blog.csdn.net/ordeder/article/details/41654509 版权声明:本文为博主(http://blog.csdn.net/ordeder)原创文 ...

  10. 标准C程序设计七---61

    Linux应用             编程深入            语言编程 标准C程序设计七---经典C11程序设计    以下内容为阅读:    <标准C程序设计>(第7版) 作者 ...