EMF--深入研究到骨子里--16

声明:本文为原创
#####请转贴时保留以下内容######
作者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插入元素说明
ListListArrayList10任意 Object  
Vector10任意 Object  
Stack10任意 Object FILO
LinkedList0任意 Object 时实现了双向队列
QueueQueue
Deque
ArrayDeque16不可任意 Object 双向队列
PriorityQueue11不可任意 Object 单向队列(FIFO)
SetSet
SotedSet
NavigableSet
EnumSet根据参数  不可须为Enum列出的类型 
JumboEnumSet(参数+63)>>>6不可不可须为Enum列出的类型 
TreeSet0不可不可须实现 Comparable 接口
或者被指定的 Comparator 所接受
 
HashSet16不可任意 Object,需实现hashCode()方法  
LinkedHashSet16不可任意 Object  
MapMap
SotedMap
NavigableMap
TreeMap0不可 Key必须实现 Comparable 接口
或者被指定的 Comparator 所接受
 
EnumMap根据参数不可不可Key必须为Enum列出的类型 
HashMap16不可任意 Object  
LinkedHashMap16不可任意 Object  
IdentityHashMap32不可 任意 Object 元素严格相等(==来判断)
HashTable11不可不可任意 Object  
WeakHashMap16不可 任意 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。

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

 

<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
阅读(232) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值