②Java.util(2)

上一节我们讲了util包中的Collection接口,即util包中有关数据结构的接口,再开始新的内容之前我们要继续回顾一下上一节的内容。

⑴ Collection (集合)接口
扩展了Iterable接口,位于集合层次结构的顶部,因此所有的集合都实现Collection接口,并提供了iterator()方法来返回一个迭代器。

  • add()方法添加对象。
  • remove方法()删除元素。
  • clear()删除集合所有元素(size=0)。
  • contains()方法查看集合是否包含对象。
  • toArray()方法返回集合元素数组。
  • equals()方法比较两个集合是否相等。
  • size()方法返回集合中元素的数目。
  • isEmpty()判断集合是否为空。
  • hashCode()返回调用集合的散列码。
  • iterator()返回调用集合的迭代器。

⑵ List(列表)接口
扩展了Collection接口,存储一个序列的元素(基于0的索引),可以包含重复的元素,但不能有null值

  • 获得特定位置的对象调用get()方法。
  • 用set()方法给特定位置元素赋值。
  • 用indexOf()或lastIndexOf()方法分别获得对象的第一个实例或最后一个实例所在的位置。
  • subList()方法取子列表,listIterator()返回一个迭代器。

⑶ Set接口
扩展了Collection接口,该集合不允许存在相同的元素(包括唯一null值)。SortedSet接口,扩展了Set接口并声明自已是升序的集合。

  • First()或Last()方法分别获得第一或最后一个对象。
  • subSet()获得子集。
  • headSet()和tailSet()方法分别获得从头开始或直到未尾的子集。

⑷ Queue(队列)接口
扩展了Collection接口,并声明一个队列行为(FIFO,先进先出列表)。

  • Offer()方法在队列插入元素。
  • element()和peek()方法获得但不移除队列的第一个元素。如果队列为空,element()抛出NoSuchElementException异常,peek()返回null。
  • poll()和remove()方法获得并移除队列的第一个元素,如果队列为空,poll()返回null,remove()抛出异常。

⑸ Comparator(比较器)接口
定义了两个方法:compare()和equals()方法,通过改写compare()方法,能够改变对象排序的方式。

⑹ Iterator(迭代器)接口、ListIterator(列表迭代器,可进行双向遍历)接口
一般来说,使用迭代器在集合中遍历时应遵循下面的步骤:

一、通过集合的iterator()得到一个指向集合开始处的迭代器:Iterator itr=collectionObject.iterator();
二、设置一个判断是否有下一个元素的循环:如while(itr.hasNext())。
三、在循环中取出下一个元素:如Object element=itr.next();

⑺ RandomAccess(随机访问)接口
被ArrayList类和遗留的Vector类实现。

⑻Map(映射)接口、Map.Entry (Map的嵌套类、内部类)接口、SortedMap(默认按key键升序排列的映射)接口
映射是将键映射到值的对象,一个映射不能包含重复的键;每个键最多只能映射一个值。

Map接口提供三种collection 视图:
键集、值集合或键-值映射关系集。映射不是集合,因为它们不实现Collection接口,但是可以通过使用entrySet()方法获得键-值映射关系的集合视图跟效果,或使用keySet()方法获得键的集合视图,使用values()方法获得值的集合视图。

  • put()方法将值放入映射中,get()得到与键k相关联的值。
  • SortedMap接口增加了获取子映射的headMap()、tailMap()、subMap()方法和获取首尾键的firstKey()、lastKey()方法。
  • Map.Entry接口定义了获取键值的getKey()、getValue()方法和替换值的setValue()方法。

Collection集合的有序是Set,Map的有序是TreeMap。

异常:

  • 试图增加一个不兼容的对象到集合或映射中,将抛出ClassCastException;
  • 如果使用无效索引,抛出IndexOutOfBoundException;
  • null不允许存在于集合或映射中,如果试图使用null对象,抛出NullPointException;
  • 当修改不可改变的集合或映射时,抛出UnsupportedOperationException;
  • 当调用下一个对象不存在时,抛出NoSuchElementException;

集合框架接口示意(父类∈子类):
1、Collection∈⑴List,⑵Set∈SortedSet。
2、Map∈SortedMap。

啰嗦了这么多,原因还是这一块儿的数据结构部分尤为重要,下面我们再来看看一部分非数据结构的类,也就是一般工具的介绍。

操作系统常见工具可以分割为:
日历、货币、时间、时区、本地化、一般属性文件、权限、验证(正则表达式扫描器)、任务调度器、通用唯一标识符、特定语言环境配置的属性文件。包结构如图所示:


java.util工具类

其中
ResourceBundle.Control defines a set of callback methods that are invoked by the ResourceBundle.getBundle factory methods during the bundle loading process,为1.6引入。
Locale.Builder is used to build instances of Locale from values configured by the setters.1.7版本引入

常见小工具
可分为:随机数、hash算法(已在上面一般属性文件中作为父类包含)、格式字符串的解释程序、字符串标记生成器。


java.util小工具

java特有工具
服务提供者加载工厂、事件模型、事件通知、位向量、对象操作工具类(1.7版本引入)。

上面简单的列举了util包中除了容器外的工具类。这两部分我们是从横向的区别来分类区分的。如果要从纵向的功能来分辨util包中的借口和类的话,我们便有了如下的分类方法:
比较、迭代、随机访问、侦听、通知
如果你对util包够熟悉的话,你就应该知道每一种功能就代表了一部分的类和接口。

后序:
可能这一篇会有些狗尾续貂的感觉,但是util包的种类繁多,功能也不一而足,我们应当建立一种理念,就是把包当做一种框架,它能够为我们完成自己的任务的时候,提供一套模板,需要我们自己去实际地填充以及调用。这也是我们理解Collection接口的时候所用的方法。最后,本系列博文只是提供一个引子,这也是每一篇博文作者写作的目的和意图之一,文字只能表达心中所想十之有三,关于util包的讲解,我推荐一篇文章《java程序设计——util包》,蒋祖德著。应该仔仔细细地拜读一番。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • Collection ├List │├LinkedList │├ArrayList │└Vector │└Stac...
    AndyZX阅读 869评论 0 1
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,560评论 18 399
  • http://www.cnblogs.com/jasonHome/p/5969574.html 结合框架体系应该最...
    shhdjjj阅读 1,203评论 0 0
  • 1.Java集合框架是什么?说出一些集合框架的优点? 每种编程语言中都有集合,最初的Java版本包含几种集合类:V...
    Oneisall_81a5阅读 898评论 0 11
  • 楔子 紫蔷薇下,男孩望着女孩,有些期盼:“风,答应我,好吗?” 女孩抿...
    几度风至夕残阅读 258评论 0 3