接口实现Thinking in Java之集合框架浅析
2013-04-30 17:52
483 查看
工作之余抽点时间出来写写博文,希望对新接触的朋友有助帮。今天在这里和大家一起学习一下接口实现
欢送探讨、交流,载转请注明出处,3Q!
集合框架API是用来示表和操纵集合的同一框架,它包括接口,实现类以及一些编程帮助算法。
细详位于java.util包下。
根据面上的UML例图,可以看出的是Java集合框架大体上可以要简分为四分部:
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
..............
其要简的UML类图如下:
一逐的停止素元问访)。其中的素元答应重复,可以无序。JDK没有供提直接实现Collection
接口的实现类。
全部实现Colection的类原则上都该应供提两个标准的构造函数:
无参构造函数于用建创一个空的容器,有参构造函数于用建创一个新的Collection,且这
个新的Collection和传入的collection拥有同相的素元。
对于其细详的方法,可直接查阅源码。
位置,用户可以用使index来直接方法素元(类似于数组下表问访式方)。List中的素元是答应
重复的。
除了拥有Collection接口必须的iterator方法外之,List还供提了一个listiterator()方法,和
标准的相较而言多了一些add()之类的方法,答应添加,删除、设定素元,主要的是够能实现
向前向后遍历。
其经常使用的实现类有LinkedList,ArrayList,vector和stack。至于其细详的用法和他们的点特
以后再停止结总。
Set的构
造函数一定有一个约束条件,制约传入的Collection不能包括重复的素元。
究竟是如何停止制约的呢?我们先看其HashSet的构造器吧。
然当所理的我们该应进入addAll()方法。进入其方法外部,由于HashSet是承继
AbstractCollection(供提Collection的主干实现)。addAll方法由AbstractCollection实现
读阅源码可以晓得,要想找到关键所在,就要进入add方法了,不过这里我们看查在
AbstractCollection类中看查add方法是他是空的。貌似断了......想一想其实不然:时辰须要留心的
是java中的多态性,我们看看类子中的实现吧:
得!我们又的进入HashMap类中去看查put方法的实现。(HashSet基于HashMap实现)
好吧,关键点就是在这里了。至于究竟是如何过滤掉重复素元的就先不说明白,其实笔者
也只有一些模糊的观点,后续会停止一些理整。
2、Map接口及其实现类
每日一道理
当浮华给予我们过多欺骗,现实中的虚假几乎让我们忘却了真的存在,是真情唤回了迷离的心,是真情带给了我们最纯、最真的感觉,它流露的是美的誓言,渗透的是永恒执著的真爱。
Map接口
Map供提了一个更加通用的素元存储方法。于用存储素元"键值对",其中的键(key)是一唯的
个每key都射映到一个值。关于Map的细详实现以及点特将在后续结总。
Tips:误区:不要将Collection认为是Java集合中的顶级接口,Map和Collection在层次结构
上没有然必的关系
理将会在后续探讨之。
整体序排
的
。该射映是根据其键的
然自次序
停止序排的,或者根据常通
在建创有序射映时供提的
根据建创射映时供提的
对于其细详内容和细详用法,后续理整。
素元停止序排、搜索以及线程安全等各种操纵。
Comparable用作认默的比拟式方,实现了该接口的类之间可以互相停止比拟,这个对象成组的集合
以可就直接通过sort()停止序排了。
Comparator是设计模式中策略模式的一种用应。将算法的实现和数据停止了离分。
一般用在如下情况下:
1、类设计者没有考虑到比拟题问而没有实现Comparable接口。这是我们以可就通过用使
Comparator,种这情况下,我们是不须要变改对象的。
2、一个集合中,我们可能须要有多重的序排标准,这时候如果用使Comparable就有些顾此失彼了
可以自己承继Comparator供提多种标准的比拟器停止序排。
至于两者的细详用使语法,读者可查阅API或者Google!Over~
文章结束给大家分享下程序员的一些笑话语录:
古鸽是一种搜索隐禽,在中国快绝迹了…初步的研究表明,古鸽的离去,很可能导致另一种长着熊爪,酷似古鸽,却又习性不同的猛禽类——犤毒鸟
欢送探讨、交流,载转请注明出处,3Q!
媒介
Java供提了数据持有对象的式方,以及对象集合的操纵。集合在Java中是非常主要的,Java集合框架API是用来示表和操纵集合的同一框架,它包括接口,实现类以及一些编程帮助算法。
细详位于java.util包下。
Java集合框架结构图
先来看看体整的其框架的UML类图根据面上的UML例图,可以看出的是Java集合框架大体上可以要简分为四分部:
1、Collection接口及其实现类
Collection├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
..............
其要简的UML类图如下:
Collection接口
Collection接口是最基本的容器接口,承继至Iterable接口(要主通过其停止生产迭代器一逐的停止素元问访)。其中的素元答应重复,可以无序。JDK没有供提直接实现Collection
接口的实现类。
全部实现Colection的类原则上都该应供提两个标准的构造函数:
无参构造函数于用建创一个空的容器,有参构造函数于用建创一个新的Collection,且这
个新的Collection和传入的collection拥有同相的素元。
对于其细详的方法,可直接查阅源码。
List接口
作为Collection的子接口,List制约容器中素元是有序的,也就是够能制控个每素元的入插位置,用户可以用使index来直接方法素元(类似于数组下表问访式方)。List中的素元是答应
重复的。
除了拥有Collection接口必须的iterator方法外之,List还供提了一个listiterator()方法,和
标准的相较而言多了一些add()之类的方法,答应添加,删除、设定素元,主要的是够能实现
向前向后遍历。
其经常使用的实现类有LinkedList,ArrayList,vector和stack。至于其细详的用法和他们的点特
以后再停止结总。
Set接口
Set是一种不包括重复素元的Collection,Set最多只有一个null素元。够能想到的是Set的构
造函数一定有一个约束条件,制约传入的Collection不能包括重复的素元。
究竟是如何停止制约的呢?我们先看其HashSet的构造器吧。
然当所理的我们该应进入addAll()方法。进入其方法外部,由于HashSet是承继
AbstractCollection(供提Collection的主干实现)。addAll方法由AbstractCollection实现
读阅源码可以晓得,要想找到关键所在,就要进入add方法了,不过这里我们看查在
AbstractCollection类中看查add方法是他是空的。貌似断了......想一想其实不然:时辰须要留心的
是java中的多态性,我们看看类子中的实现吧:
得!我们又的进入HashMap类中去看查put方法的实现。(HashSet基于HashMap实现)
好吧,关键点就是在这里了。至于究竟是如何过滤掉重复素元的就先不说明白,其实笔者
也只有一些模糊的观点,后续会停止一些理整。
2、Map接口及其实现类
每日一道理
当浮华给予我们过多欺骗,现实中的虚假几乎让我们忘却了真的存在,是真情唤回了迷离的心,是真情带给了我们最纯、最真的感觉,它流露的是美的誓言,渗透的是永恒执著的真爱。
Map接口
Map供提了一个更加通用的素元存储方法。于用存储素元"键值对",其中的键(key)是一唯的个每key都射映到一个值。关于Map的细详实现以及点特将在后续结总。
Tips:误区:不要将Collection认为是Java集合中的顶级接口,Map和Collection在层次结构
上没有然必的关系
AbstractMap类
供提Map接口的主干实现HashMap类
基于哈希表的Map接口实现,利用哈希算法根据hashCode()来配置存储址地,细详的实现原理将会在后续探讨之。
SortedMap接口
进一步供提关于键的整体序排
的
Map
。该射映是根据其键的
然自次序
停止序排的,或者根据常通
在建创有序射映时供提的
Comparator停止序排。
TreeMap类
基于红黑树(Red-Black tree)的NavigableMap实现。该射映根据其键的然自次序停止序排,或者
根据建创射映时供提的
Comparator停止序排,细详取决于用使的构造方法。
3、Iterator接口及实现类
迭代器设计模式,通过它我们可以遍历并择选集合中的对象,对于其集合的底层结构实现不并关怀。对于其细详内容和细详用法,后续理整。
4、帮助工具类
这笔者想当然的分类的吧,不过也不打紧,便于思考解理就行。Collections、Arrays类
Collections、Arrays是集合类的一个工具类/助帮类,其中供提了一系列静态方法,于用对集合中素元停止序排、搜索以及线程安全等各种操纵。
Comparable、Comparator接口
一般是于用对象的比拟来实现序排,两者略有区分Comparable用作认默的比拟式方,实现了该接口的类之间可以互相停止比拟,这个对象成组的集合
以可就直接通过sort()停止序排了。
Comparator是设计模式中策略模式的一种用应。将算法的实现和数据停止了离分。
一般用在如下情况下:
1、类设计者没有考虑到比拟题问而没有实现Comparable接口。这是我们以可就通过用使
Comparator,种这情况下,我们是不须要变改对象的。
2、一个集合中,我们可能须要有多重的序排标准,这时候如果用使Comparable就有些顾此失彼了
可以自己承继Comparator供提多种标准的比拟器停止序排。
至于两者的细详用使语法,读者可查阅API或者Google!Over~
文章结束给大家分享下程序员的一些笑话语录:
古鸽是一种搜索隐禽,在中国快绝迹了…初步的研究表明,古鸽的离去,很可能导致另一种长着熊爪,酷似古鸽,却又习性不同的猛禽类——犤毒鸟
相关文章推荐
- Java中集合框架,Collection接口、Set接口、List接口、Map接口,已经常用的它们的实现类,简单的JDK源码分析底层实现
- Java之集合框架 常用接口的继承、实现关系图
- Java中集合框架,Collection接口、Set接口、List接口、Map接口,已经常用的它们的实现类,简单的JDK源码分析底层实现
- 第十五篇:JAVA集合框架之Set接口实现类
- java集合框架集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。
- JavaSE入门学习36:Java集合框架之Set接口及其实现类HashSet和TreeSet
- Thinking in Java之集合框架浅析
- Thinking in Java之集合框架浅析
- 深入java集合学习1-集合框架浅析
- java 集合框架中间迭代器的使用和实现原理
- 浅析Java的单继承与实现多个接口
- Thinking in java基础之集合框架(转载)
- java 集合框架(2)List接口
- java学习日记_77:集合框架之List接口
- Java回顾:用一个Demo来说明继承抽象类和实现接口的简单框架模型
- Java:concurrent包下面的Map接口框架图(ConcurrentMap接口、ConcurrentHashMap实现类)
- Java基础知识强化之集合框架笔记29:使用LinkedList实现栈数据结构的集合代码(面试题)
- Java框架集合:Collection<E>、Iterable<T>和Iterator<E>接口
- 自己实现集合框架(十一):栈接口定义
- java基础-集合框架3 list接口