java集合是java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。java集合工具包位置是java.util.*

java集合主要可以划分为4个部分:list列表、set集合、map映射、工具类(iterator迭代器、enumeration枚举类、arrays和collections)。

java集合工具包框架如下图。

说明:看上面的框架图,先抓住它的主干,即collection和map。

collection是一个接口,是高度抽象出来的集合,它包含了集合的基本操作和属性。

collection包含了list和set两大分支。

(01) list是一个有序的队列,每一个元素都有它的索引。第一个元素的索引值是0。

list的实现类有linkedlist, arraylist, vector, stack。

(02) set是一个不允许有重复元素的集合。

set的实现类有hastset和treeset。hashset依赖于hashmap,它实际上是通过hashmap实现的;treeset依赖于treemap,它实际上是通过treemap实现的。

map是一个映射接口,即key-value键值对。map中的每一个元素包含“一个key”和“key对应的value”。

abstractmap是个抽象类,它实现了map接口中的大部分api。而hashmap,treemap,weakhashmap都是继承于abstractmap。

hashtable虽然继承于dictionary,但它实现了map接口。

接下来,再看iterator。它是遍历集合的工具,即我们通常通过iterator迭代器来遍历集合。我们说collection依赖于iterator,是因为collection的实现类都要实现iterator()函数,返回一个iterator对象。

listiterator是专门为遍历list而存在的。

再看enumeration,它是jdk 1.0引入的抽象类。作用和iterator一样,也是遍历集合;但是enumeration的功能要比iterator少。在上面的框图中,enumeration只能在hashtable, vector, stack中使用。

最后,看arrays和collections。它们是操作数组、集合的两个工具类。

有了上面的整体框架之后,我们接下来对每个类分别进行分析。

collection架构下面,我们将对collection进行概括。下面先看看collection的一些框架类的关系图:

collection是一个接口,它主要的两个分支是:list 和 set。

list和set都是接口,它们继承于collection。list是有序的队列,list中可以有重复的元素;而set是数学概念中的集合,set中没有重复元素!

list和set都有它们各自的实现类。

为了方便实现,集合中定义了abstractcollection抽象类,它实现了collection中的绝大部分函数;这样,在collection的实现类中,我们就可以通过继承abstractcollection省去重复编码。abstractlist和abstractset都继承于abstractcollection,具体的list实现类继承于abstractlist,而set的实现类则继承于abstractset。

另外,collection中有一个iterator()函数,它的作用是返回一个iterator接口。通常,我们通过iterator迭代器来遍历集合。listiterator是list接口所特有的,在list接口中,通过listiterator()返回一个listiterator对象。

接下来,我们看看各个接口和抽象类的介绍;然后,再对实现类进行详细的了解。

1. collection简介collection的定义如下:

public interface collection extends iterable {}

它是一个接口,是高度抽象出来的集合,它包含了集合的基本操作:添加、删除、清空、遍历(读取)、是否为空、获取大小、是否保护某元素等等。

collection接口的所有子类(直接子类和间接子类)都必须实现2种构造函数:不带参数的构造函数 和 参数为collection的构造函数。带参数的构造函数,可以用来转换collection的类型。

// collection的api

abstract boolean add(e object)

abstract boolean addall(collection extends e> collection)

abstract void clear()

abstract boolean contains(object object)

abstract boolean containsall(collection> collection)

abstract boolean equals(object object)

abstract int hashcode()

abstract boolean isempty()

abstract iterator iterator()

abstract boolean remove(object object)

abstract boolean removeall(collection> collection)

abstract boolean retainall(collection> collection)

abstract int size()

abstract t[] toarray(t[] array)

abstract object[] toarray()

2. list简介list的定义如下:

public interface list extends collection {}

list是一个继承于collection的接口,即list是集合中的一种。list是有序的队列,list中的每一个元素都有一个索引;第一个元素的索引值是0,往后的元素的索引值依次+1。和set不同,list中允许有重复的元素。 list的官方介绍如下:

a list is a collection which maintains an ordering for its elements. every element in the list has an index. each element can thus be accessed by its index, with the first index being zero. normally, lists allow duplicate elements, as compared to sets, where elements have to be unique.

关于api方面。既然list是继承于collection接口,它自然就包含了collection中的全部函数接口;由于list是有序队列,它也额外的有自己的api接口。主要有“添加、删除、获取、修改指定位置的元素”、“获取list中的子队列”等。

// collection的api

abstract boolean add(e object)

abstract boolean addall(collection extends e> collection)

abstract void clear()

abstract boolean contains(object object)

abstract boolean containsall(collection> collection)

abstract boolean equals(object object)

abstract int hashcode()

abstract boolean isempty()

abstract iterator iterator()

abstract boolean remove(object object)

abstract boolean removeall(collection> collection)

abstract boolean retainall(collection> collection)

abstract int size()

abstract t[] toarray(t[] array)

abstract object[] toarray()

// 相比与collection,list新增的api:

abstract void add(int location, e object)

abstract boolean addall(int location, collection extends e> collection)

abstract e get(int location)

abstract int indexof(object object)

abstract int lastindexof(object object)

abstract listiterator listiterator(int location)

abstract listiterator listiterator()

abstract e remove(int location)

abstract e set(int location, e object)

abstract list sublist(int start, int end)

3. set简介set的定义如下:

public interface set extends collection {}

set是一个继承于collection的接口,即set也是集合中的一种。set是没有重复元素的集合。

关于api方面。set的api和collection完全一样。

// set的api

abstract boolean add(e object)

abstract boolean addall(collection extends e> collection)

abstract void clear()

abstract boolean contains(object object)

abstract boolean containsall(collection> collection)

abstract boolean equals(object object)

abstract int hashcode()

abstract boolean isempty()

abstract iterator iterator()

abstract boolean remove(object object)

abstract boolean removeall(collection> collection)

abstract boolean retainall(collection> collection)

abstract int size()

abstract t[] toarray(t[] array)

abstract object[] toarray()

4. abstractcollectionabstractcollection的定义如下:

public abstract class abstractcollection implements collection {}

abstractcollection是一个抽象类,它实现了collection中除iterator()和size()之外的函数。

abstractcollection的主要作用:它实现了collection接口中的大部分函数。从而方便其它类实现collection,比如arraylist、linkedlist等,它们这些类想要实现collection接口,通过继承abstractcollection就已经实现了大部分的接口了。

5. abstractlistabstractlist的定义如下:

public abstract class abstractlist extends abstractcollection implements list {}

abstractlist是一个继承于abstractcollection,并且实现list接口的抽象类。它实现了list中除size()、get(int location)之外的函数。

abstractlist的主要作用:它实现了list接口中的大部分函数。从而方便其它类继承list。

另外,和abstractcollection相比,abstractlist抽象类中,实现了iterator()接口。

6. abstractset

abstractset的定义如下:

public abstract class abstractset extends abstractcollection implements set {}

abstractset是一个继承于abstractcollection,并且实现set接口的抽象类。由于set接口和collection接口中的api完全一样,set也就没有自己单独的api。和abstractcollection一样,它实现了list中除iterator()和size()之外的函数。

abstractset的主要作用:它实现了set接口中的大部分函数。从而方便其它类实现set接口。

7. iteratoriterator的定义如下:

public interface iterator {}

iterator是一个接口,它是集合的迭代器。集合可以通过iterator去遍历集合中的元素。iterator提供的api接口,包括:是否存在下一个元素、获取下一个元素、删除当前元素。

注意:iterator遍历collection时,是fail-fast机制的。即,当某一个线程a通过iterator去遍历某集合的过程中,若该集合的内容被其他线程所改变了;那么线程a访问集合时,就会抛出concurrentmodificationexception异常,产生fail-fast事件。关于fail-fast的详细内容,我们会在fail-fast总结后面专门进行说明。

// iterator的api

abstract boolean hasnext()

abstract e next()

abstract void remove()

8. listiteratorlistiterator的定义如下:

public interface listiterator extends iterator {}

listiterator是一个继承于iterator的接口,它是队列迭代器。专门用于便利list,能提供向前/向后遍历。相比于iterator,它新增了添加、是否存在上一个元素、获取上一个元素等等api接口。

// listiterator的api

// 继承于iterator的接口

abstract boolean hasnext()

abstract e next()

abstract void remove()

// 新增api接口

abstract void add(e object)

abstract boolean hasprevious()

abstract int nextindex()

abstract e previous()

abstract int previousindex()

abstract void set(e object)

希望与广大网友互动??

点此进行留言吧!

java collectiongroup 类_Java中的collection集合类型总结相关推荐

  1. collect的几种形式_Java中的collection集合类型总结

    Java集合是java提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映射等.Java集合工具包位置是java.util.* Java集合主要可以划分为4个部分:List列表.Set集 ...

  2. java set类_java中set类型集合解析(一)

    集合的体系: -----------------Collection  单例集合接口 ----------------------List 如果实现的是List接口的集合,具备有序,可重复的特性 -- ...

  3. java异常类_java中常见的异常类

    展开全部 从异常类的继承架构图中可以看出:Exception 类扩展出数个子类,其中 IOException.RunntimeException 是较常用的两种. 习惯上将 Error 与 Excep ...

  4. java正则表达式类_java中正则表达式之Pattern类与Matcher类

    java中正则表达式之Pattern类与Matcher类 ======================================================================= ...

  5. java utils类_Java中StringUtils工具类的一些用法实例

    StringUtils 方法的操作对象是 java.lang.String 类型的对象,是 JDK 提供的 String 类型操作方法的补充,并且是 null 安全的(即如果输入参数 String 为 ...

  6. java url类_Java中的URL类和示例 - Break易站

    URL类是Internet上任何可用资源的网关.类URL表示统一资源定位符,它是指向万维网上"资源"的指针.资源可以指向简单的文件或目录,也可以引用更复杂的对象,例如对数据库或搜索 ...

  7. java configuration类_JAVA中的Configuration类详解

    本文主要研究的是java中的configuration类的用法,涉及maven自动加载,pom.xml配置和简单的java代码,具体如下. properties文件是java平台默认的配置文件格式,其 ...

  8. java几何体类_java中Graphics2D的几何图形类有哪些?实例展示

    随着时代的进步与发展,越来越多的人开始投入到java的学习中来.今天就来为大家介绍一些java基础知识,java中Graphics2D的几何图形类有哪些,并且通过实际的代码为大家展示. java中Gr ...

  9. java自定义异常类_java中自定义异常类

    hello,大家好,今天跟大家分享一下java中如何自定义异常,以后如果有新的心得,再添加,欢迎前辈指导... 首先,上Api,看一下异常和错误的父类: 然后,现在假设我有个循环(i=0;i<1 ...

最新文章

  1. Lua------------------unity与lua的热更新
  2. redis setnx 分布式锁_Spring Boot 整合 Redis 正确的实现分布式锁
  3. 8086的两种工作模式_Lora自组网网关的两种工作模式
  4. 神策数据荣获 2017 年度商业影响力大数据领域新锐企业 TOP 10
  5. tensorflow RNN循环神经网络 (分类例子)-【老鱼学tensorflow】
  6. 核能力将定手机浏览器HTML5之争成败
  7. mysql-查询演练-商城查询-数据修改-sql注入及防范
  8. android gridview拖动排序,Asp.net GridView 拖拽排序    原创(欢迎拍砖,敬请嘴下留情!)...
  9. python零基础学习书-零基础如何学好python?推荐6本入门书籍,帮你打基础
  10. 如何让Tuxera NTFS总是挂载不干净的卷?
  11. TransE算法详解
  12. Java-集合练习题
  13. 计算电磁学MoM学习启动篇
  14. IT基础架构规划方案
  15. 官方免费申请许可证-VMware Fusion 12 – Personal Use License
  16. pyecharts(9)-动态可视化-树形图-思维导图
  17. 仿iGoogle自定义首页模块拖拽效果
  18. C/C++音乐播放(亲测有效)
  19. 戴维斯分校 计算机硕士,申请加州大学戴维斯分校计算机研究生的入学条件是什么?...
  20. unlink-sleepyholder

热门文章

  1. 开启企业级市场转型之路 群晖亮出安全“杀手锏”
  2. scala seq java_Scala中的两个Seq比较
  3. idea创建springmvc项目
  4. Java实体类去掉属性值空格
  5. (Docker实战) 第3篇:Centos7 拉取和部署Mysql
  6. (需求实战_进阶_07)SSM集成RabbitMQ 订阅模式 关键代码讲解、开发、测试
  7. 第7篇:Flowable快速工作流脚手架Jsite_请假实战_HR审批
  8. Vue封装预约日期插件和发布到npm上
  9. 酷睿i7cpu适合的linux,CPU性能篇 - Core i7-4770K Linux之旅:有喜有忧_Linux新闻_Linux公社-Linux系统门户网站...
  10. 乘法原理的例题和答案_吃透高考数学17个必考题型,基础再差也能考130!(内附解题技巧+例题解析)...