Chinaunix首页 | 论坛 | 博客
  • 博客访问: 870348
  • 博文数量: 177
  • 博客积分: 761
  • 博客等级: 上士
  • 技术积分: 1518
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-04 22:37
文章分类

全部博文(177)

文章存档

2017年(1)

2016年(3)

2015年(33)

2014年(48)

2013年(60)

2012年(32)

分类: Java

2013-03-18 11:36:58

声明:本文为原创
#####请转贴时保留以下内容######
作者GTT
本文档归属http://oldtown.cublog.cn/.转载请注明出处!
请提出宝贵意见Mail:mtloveft@hotmail.com
提示本文是关于介绍EMF,即Eclipse modeling Framework
 
在继续分析EMF下去,需要一些基本概念,否则会被程序弄晕。下面介绍JAVA的基本库JCF(java6)。

JCF Java Colection Framework的缩写。java集合框架。

就是java库对容器类的全部实现。

继承图如下:

图片有点大,放大可能有点不清晰,可以下载下面的PDF文件,放大也没问题。
文件地址:  资源文件暂时不能upload得等等了。
 

水色      的为接口,蓝色的为抽象超类,跟黄色靠近的都是实现类。

橘黄色    的为List实现。

浅绿黄色  Queue的实现。

黄色      的为Set的实现。

深绿黄色  Map的实现。

 

 主要接口如下:

Iterable                              可迭代接口

Collection                          集合接口

List                                        List接口

Queue                                 队列            FIFOFirst In First Out

Deque                                  双向队列

Set                                         Set

SotedSet                             排序分类Set

NavigableSet                    继承于SotedSet,多一些方法

Map                                       Map

SotedMap                          排序分类Map

NavigableMap                  继承于SotedMap,多一些方法

抽象类如下:

AbstractCollection          抽象Collection

AbstractList                        抽象List

AbstractSequentialList  抽象有序List

AbstractQueue                 抽象Queue

AbstractSet                        抽象Set

AbstractMap                      抽象Map

Dictionary                           抽象字典类

实现类如下:

ArrayList                              数组List

Vector                                  数组List(同步处理)

Stack                                            FILO   First In Last Out

LinkedList                          链表List

ArrayDeque                      数组双向队列

PriorityQueue                 带优先级队列

EnumSet                            枚举类型Set

JumboEnumSet               大容量枚举类型Set

TreeSet                               树状Set

HashSet                               HashSet

LinkedHashSet                 链表HashSet

TreeMap                             树状Map

EnumMap                           Key为枚举类型的Map

HashMap                             HashMap

LinkedHashMap               链表HashMap

IdentityHashMap             id hashMap(Key比较是用==)

WeakHashMap                 Key hashMap

HashTable                           hash

 
功能对比如下:
Interface 实现类 初始化元素个数 插入顺序 排序 Null插入 元素 说明
List List ArrayList 10 任意 Object   
Vector 10 任意 Object   
Stack 10 任意 Object  FILO
LinkedList 0 任意 Object  时实现了双向队列
Queue Queue
Deque
ArrayDeque 16 不可 任意 Object  双向队列
PriorityQueue 11 不可 任意 Object  单向队列(FIFO)
Set Set
SotedSet
NavigableSet
EnumSet 根据参数     不可 须为Enum列出的类型  
JumboEnumSet (参数+63)>>>6 不可 不可 须为Enum列出的类型  
TreeSet 0 不可 不可 须实现 Comparable 接口
或者被指定的 Comparator 所接受
 
HashSet 16 不可 任意 Object,需实现hashCode()方法   
LinkedHashSet 16 不可 任意 Object   
Map Map
SotedMap
NavigableMap
TreeMap 0 不可   Key必须实现 Comparable 接口
或者被指定的 Comparator 所接受
 
EnumMap 根据参数 不可 不可 Key必须为Enum列出的类型  
HashMap 16 不可 任意 Object   
LinkedHashMap 16 不可 任意 Object   
IdentityHashMap 32 不可   任意 Object  元素严格相等(==来判断)
HashTable 11 不可 不可 任意 Object   
WeakHashMap 16 不可   任意 Object  ※我从来没用过,也感觉没什么用。
 
 

Iterable就定义一个方法取得迭代器iterator()

 

 Collection接口定义的方法如下:

 

向集合里添加元素:                                add(),         addAll()

从集合里删除元素:                                remove(),  removeAll()

判断一个元素是否包含在集合里:  contains()

集合的大小:                                               size()

集合是否为空:                                          isEmpty()

集合清空:                                                    clear()

取两个集合的交集:                                retainAll()

判断一个集合是否为子集:                 containsAll()

把集合转化为数组:                                toArray()

继承自Iterable接口的取得迭代器: iterator()

 
 

List接口除了实现以上方法外还增加了以下方法,

根据坐标取得元素:                                          get(int)

在指定坐标位置插入元素:                           add(int)

在指定坐标位置插入另一个集合:            add(int,Collection  extends E>)

取得一个元素在List里的最末尾的位置:lastIndexOf()

删除指定坐标位置的元素:                           remove(int)

替换指定坐标位置的元素:                           set()

取得List类型的迭代器:                                   listIterator()

取得指定坐标位置的迭代器:                      listIterator(int)

取得两个坐标间的所有元素:                      subList(int, int)

 
 

Queue就是FIFO队列,队列有头有尾,Queue只能对队列头操作。

remove(),poll(),peek(),element()都是取得队列的头,之间稍微有一点差别

peek()最简单,取得头,如果队列为空,则返回NULL

element()是对peek()的加强,如果为空队列,则抛出NoSuchElementException

poll()是取得队列的头,然后从队列里删除这个队列头。如果队列为空,就返回NULL

remove()是对poll的加强,队列为空,就抛出NoSuchElementException异常。

offer()就是在队列尾增加元素,add()方法直接调用这个offer()方法。

 
 
 

Deque是双向队列,可以对队列的头和尾进行操作。

 

向队列头添加元素:    addFirst(),          offerFirst(),   push(),

向队列尾添加元素:    addLast(),           offerLast(),    add(),     offer()

从队列头删除元素:    removeFirst(),  pollFirst(),     poll(),     remove(),   pop()

从队列尾删除元素:    removeLast(),   pollLast()

取得队列的头元素:    peekFisrt(),        getFisrt(),      peek(),  element()

取得队列的尾元素:    peekLast(),         getLast()

从队列头开始,删除     第一次出现的元素:        removeFistOccurrence()

从队列头开始,删除最后一次出现的元素:                 removeLastOccurrence()

 
 

Set接口基本就是对Collection接口的copy

没有多增加方法。

 

 

Map接口的主要方法如下。

map里的一个条目用Entry来表示。

map里追加一个条目:     put()

取得所有的Key:                      keySet()

取得所有的值:                         values()

map里是否包含指定Key:   containsKey()

map里是否包含指定值:                   containsValue()

取得所有条目:                                      entrySet()

根据Key取得值:                                   get()

根据Key删除map里的一个条目: remove()

两个map进行合并:                             putAll()

取得map的大小:                                  size()

判断map是否为空:                             isEmpty()

清空map:                                                 clear()

 

简单介绍下JAVA6的JCF,下一篇再来看看EMF对JCF的扩展。EMF主要是扩展了List。

即使这样,功能还是强大了很多。

 

阅读(1002) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~