两个月之前准备软考时,简单的从理论上总结了最经常使用的数据结构和算法,比方:线性表链表。在进行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. PHP协程是通过生成器实现的,这里测试了PHP生成器的一些特性

    学习PHP的生成器,测试了一些特性.代码如下: function gen() { $name = (yield 'hello'); $nickname = (yield 'world'); yield ...

  2. 九度oj 题目1355:扑克牌顺子

    题目描述: LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他 ...

  3. No entity found for query异常

    错误为getSingleResult();获取值时获取不到报异常. getSingleResult的源码有一句: @throws EntityNotFoundException if there is ...

  4. hibernate框架的搭建与简单实现增删改

    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自 ...

  5. javascript之进阶

    一 模态框 1 什么是模态框 模态框(Modal)是覆盖在父窗体上的子窗体.指在用户想要对对话框以外的应用程序进行操作时,必须首先对该对话框进行响应.如单击[确定]或[取消]按钮等将该对话框关闭. 2 ...

  6. 莫比乌斯函数之和(51nod 1244)

    莫比乌斯函数,由德国数学家和天文学家莫比乌斯提出.梅滕斯(Mertens)首先使用μ(n)(miu(n))作为莫比乌斯函数的记号.具体定义如下: 如果一个数包含平方因子,那么miu(n) = 0.例如 ...

  7. <深入理解计算机系统> CSAPP Tiny web 服务器

    本文是我学习<深入理解计算机系统>中网络编程部分的学习笔记. 1. Web基础       web客户端和服务器之间的交互使用的是一个基于文本的应用级协议HTTP(超文本传输协议).一个w ...

  8. C# 打印webBrowser打开的页面

    this.webBrowser.Navigate(webBrowserUrl, tagerFrameName, postBuffer, heads); this.webBrowser.Document ...

  9. git提交node-modules报文件名过长无法提交问题

    当报如下错误时候 fatal: unable to stat 'node_modules/gulp-connect/node_modules/gulp-util/node_modules/datefo ...

  10. angular关于依赖注入

    <html> <head> <title>Angular JS Forms</title> </head> <body> < ...