J2SE综合对java util的总结 一

J2SE综合对java util的总结 一

java.util包中包含了一些在Java 2中新增加的最令人兴奋的增强功能:类集。一个类集(collection)是一组对象。类集的增加使得许多java.util中的成员在结构和体系结构上发生根本的改变。它也扩展了包可以被应用的任务范围。类集是被所有Java程序员紧密关注的最新型的技术。

除了类集,java.util还包含了支持范围广泛的函数的各种各样的类和接口。这些类和接口被核心的Java包广泛使用,同时当然也可以被你编写的程序所使用。对它们的应用包括产生伪随机数,对日期和时间的操作,观测事件,对位集的操作以及标记字符串。由于java.util具有许多特性,因此它是Java中最被广泛使用的一个包。

java.util中包含的类如下。

在Java 2中新增加的一些也被列出:

AbstractCollection (Java 2) EventObject Random

AbstractList (Java 2) GregorianCalendar ResourceBundle

AbstractMap (Java 2) HashMap (Java 2) SimpleTimeZone

AbstractSequentialList (Java 2) HashSet (Java 2) Stack

AbstractSet (Java 2) Hashtable StringTokenizer

ArrayList (Java 2) LinkedList (Java 2) Timer (Java 2, v1.3)

Arrays (Java 2) ListResourceBundle TimerTask (Java 2, v1.3)

BitSet Locale TimeZone

Calendar Observable TreeMap (Java 2)

Collections (Java 2) Properties TreeSet (Java 2)

Date PropertyPermission (Java 2) Vector

Dictionary PropertyResourceBundle WeakHashMap (Java 2)

java.util定义了如下的接口。注意其中大多数是在Java 2中新增加的。

Collection (Java 2) List (Java 2) Observer

Comparator (Java 2) ListIterator (Java 2) Set (Java 2)

Enumeration Map (Java 2) SortedMap (Java 2)

EventListener Map.Entry (Java 2) SortedSet (Java 2)

Iterator (Java 2)

ResourceBundle类,ListResourceBundle类和PropertyResourceBundle类帮助具有特定地区资源的大型程序国际化。关于这些类的讨论,在这里从略。授权对系统属性进行读/写的PropertyPermission类也超过了本书的讨论范围。EventObject和EventListener类将在第20章讨论。下面将对剩下的类和接口做详细的讨论。

15.1 类集概述

Java的类集(Collection)框架使你的程序处理对象组的方法标准化。在Java 2出现之前,Java提供了一些专门的类如Dictionary,Vector,Stack和Properties去存储和操作对象组。尽管这些类非常有用,它们却缺少一个集中,统一的主题。因此例如说使用Vector的方法就会与使用Properties的方法不同。以前的专门的方法也没有被设计成易于扩展和能适应新的环境的形式。而类集解决了这些(以及其他的一些)问题。

类集框架被设计用于适应几个目的。

首先,这种框架是高性能的。对基本类集(动态数组,链接表,树和散列表)的实现是高效率的。一般很少需要人工去对这些“数据引擎”编写代码(如果有的话)。第二点,框架必须允许不同类型的类集以相同的方式和高度互操作方式工作。第三点,类集必须是容易扩展和/或修改的。为了实现这一目标,类集框架被设计成包含一组标准的接口。对这些接口,提供了几个标准的实现工具(例如LinkedList,HashSet和TreeSet),通常就是这样使用的。如果你愿意的话,也可以实现你自己的类集。

为了方便起见,创建用于各种特殊目的的实现工具。一部分工具可以使你自己的类集实现更加容易。最后,增加了允许将标准数组融合到类集框架中的机制。

算法(Algorithms)是类集机制的另一个重要部分。算法操作类集,它在Collections类中被定义为静态方法。因此它们可以被所有的类集所利用。每一个类集类不必实现它自己的方案,算法提供了一个处理类集的标准方法。

由类集框架创建的另一项是Iterator接口。一个迭代程序(iterator)提供了一个多用途的,标准化的方法,用于每次访问类集的一个元素。因此迭代程序提供了一种枚举类集内容(enumerating the contents of a collection)的方法。因为每一个类集都实现Iterator,所以通过由Iterator定义的方法,任一类集类的元素都能被访问到。因此,稍作修改,循环通过集合的程序代码也可以被用来循环通过列表。

除了类集之外,框架定义了几个映射接口和类。映射(Maps)存储键/值对。尽管映射在对项的正确使用上不是“类集”,但它们完全用类集集成。在类集框架的语言中,可以获得映射的类集“视图”(collection-view)。这个“视图”包含了从存储在类集中的映射得到的元素。因此,如果选择了一个映射,就可以将其当做一个类集来处理。

对于由java.util定义的原始类,类集机制被更新以便它们也能够集成到新的系统里。所以理解下面的说法是很重要的:尽管类集的增加改变了许多原始工具类的结构,但它却不会导致被抛弃。类集仅仅是提供了处理事情的一个更好的方法。

最后的一点:如果你对C++比较熟悉的话,那么你可以发现Java的类集技术与在C++中定义的标准模板库(STL)相似。在C++中叫做容器(container),而在Java中叫做类集。

15.2 类集接口

类集框架定义了几个接口。本节对每一个接口都进行了概述。首先讨论类集接口是因为它们决定了collection类的基本特性。不同的是,具体类仅仅是提供了标准接口的不同实现。支持类集的接口总结在如下的表中:

接口描述

Collection 能使你操作对象组,它位于类集层次结构的顶层

List 扩展Collection去处理序列(对象的列表)

Set 扩展Collection去处理集合,集合必须包含唯一元素

SortedSet 扩展Set去处理排序集合

除了类集接口之外,类集也使用Comparator,Iterator和ListIterator接口。关于这些接口将在本章后面做更深入的描述。简单地说,Comparator接口定义了两个对象如何比较;

Iterator和ListIterator接口枚举类集中的对象。

为了在它们的使用中提供最大的灵活性,类集接口允许对一些方法进行选择。可选择的方法使得使用者可以更改类集的内容。支持这些方法的类集被称为可修改的(modifiable)。不允许修改其内容的类集被称为不可修改的(unmodifiable)。如果对一个不可修改的类集使用这些方法,将引发一个UnsupportedOperationException异常。所有内置的类集都是可修改的。

下面讨论类集接口。

15.2.1 类集接口

Collection接口是构造类集框架的基础。它声明所有类集都将拥有的核心方法。这些方法被总结在表15-1中。因为所有类集实现Collection,所以熟悉它的方法对于清楚地理解框架是必要的。其中几种方法可能会引发一个UnsupportedOperationException异常。正如上面解释的那样,这些发生在当类集不能被修改时。当一个对象与另一个对象不兼容,例如当企图增加一个不兼容的对象到一个类集中时。将产生一个ClassCastException异常。表15-1 由Collection 定义的方法

方法描述

boolean add(Object obj) 将obj加入到调用类集中。如果obj被加入到类集中了,则返

回true;如果obj已经是类集中的一个成员或类集不能被复制时,则返回falseboolean addAll(Collection c) 将c中的所有元素都加入到调用类集中,如果操作成功(也就是说元素被加入了),则返回true;否则返回falsevoid clear( ) 从调用类集中删除所有元素boolean contains(Object obj) 如果obj是调用类集的一个元素,则返回true,否则,返回falseboolean containsAll(Collection c) 如果调用类集包含了c中的所有元素,则返回true;否则,返回falseboolean equals(Object obj) 如果调用类集与obj相等,则返回true;否则返回falseint hashCode( ) 返回调用类集的散列码boolean isEmpty( ) 如果调用类集是空的,则返回true;否则返回falseIterator iterator( ) 返回调用类集的迭代程序Boolean remove(Object obj) 从调用类集中删除obj的一个实例。如果这个元素被删除了,则返回true;否则返回falseBoolean removeAll(Collection c) 从调用类集中删除c的所有元素。如果类集被改变了(也就是说元素被删除了),则返回true;否则返回falseBoolean retainAll(Collection c) 删除调用类集中除了包含在c中的元素之外的全部元素。如果类集被改变了(也就是说元素被删除了),则返回true,否则返回falseint size( ) 返回调用类集中元素的个数Object[ ] toArray( ) 返回一个数组,该数组包含了所有存储在调用类集中的元素。数组元素是类集元素的拷贝Object[ ] toArray(Object array[ ]) 返回一个数组,该数组仅仅包含了那些类型与数组元素类型匹配的类集元素。数组元素是类集元素的拷贝。如果array的大小与匹配元素的个数相等,它们被返回到array.如果array的大小比匹配元素的个数小,将分配并返回一个所需大小的新数组,如果array的大小比匹配元素的个数大,在数组中,在类集元素之后的单元被置为null.如果任一类集元素的类型都不是array 的子类型, 则引发一个ArrayStoreException异常

调用add( )方法可以将对象加入类集。注意add( )带一个Object类型的参数。因为Object是所有类的超类,所以任何类型的对象可以被存储在一个类集中。然而原始类型可能不行。例如,一个类集不能直接存储类型int,cha参考http://wenku.it168.com/d_000068692.shtml

转载于:https://www.cnblogs.com/Q685656/archive/2013/03/04/2942413.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266364.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全国计算机等级考试题库二级C操作题100套(第54套)

第54套: 给定程序中,函数fun的功能是:计算出带有头结点的单向链表中各结点数据域中值之和作为函数值返回。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中…

安卓微软雅黑字体ttf_618巨献丨精致的悦黑5字重小字体

悦黑字体简介去年双十一当天,小编应大家要求,分享了一款悦黑小字体,苹果和安卓都有:双十一巨献:令人瑟瑟发抖的5字重悦黑小字体大半年时间过去了,一直没有更新,今天抽空更新一下。悦黑是由造字工…

全国计算机等级考试题库二级C操作题100套(第55套)

第55套: 给定程序中,函数fun的功能是:判断形参s所指字符串是否是"回文" (Palindrome),若是,函数返回值为1;不是,函数返回值为0。“回文” 是正读和反读都一样…

面试的问题 及回答

1、Postmessage 与 SendMessage的区别 PostMessage该函数将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里,不等待线程处理消息就返回,是异步消息模式。消息队列里的消息通过调用GetMessage和PeekMessage取得 SendMes…

伪静态隐藏域名后缀_你想知道的动态URL、静态URl、伪静态URL概念及区别都在这里!...

【小宅按】我们说url的动态、静态、伪静态三种形式,其实从严格分类上来说,伪静态也是动态的一种,只是表现形式为静态。参考:动态url、静态url和伪静态url的详细讲解 - 好文分享动态URl动态页面的特征1、以ASP、PHP、JSP、ASP.NET …

700多位老人的“智慧”养老记

“智慧”养老,受益的不只是居住养老公寓的老年人,养老机构本身也受益匪浅。 2012年12月,由汇晨养老公司机构管理有限公司(简称汇晨养老公司)与NEC中国共同开发的智能老年公寓信息化系统投入运行,生活在北京昌平区北七家汇晨老年公…

java清理语句,java – 如何在不使用准备语句的情况下对SQL进行清理

对,准备好的语句查询参数只能在您使用单个文字值的地方使用.您不能对表名,列名,值列表或任何其他SQL语法使用参数.所以你必须将你的应用程序变量插入到SQL字符串中,并引用相应的字符串.请使用引号来定界您的表名标识符,并将引号字符串加倍排列:java.sql.DatabaseMet…

【NOIP模拟】图论题Graph

题面 n点2n-2条有向边&#xff0c;数据先给一颗1为根的生成树边集&#xff0c;边目录按两部分给出 1、 开始的 n-1 条边描述了一颗以 1 号点为根的生成树&#xff0c;即每个点都可以由 1 号点 到达。 2、 接下来的 N-1 条边&#xff0c;一定是从 i 到 1&#xff08;2<i<N…

全国计算机等级考试题库二级C操作题100套(第56套)

第56套&#xff1a; 给定程序的功能是&#xff1a;从键盘输入若干行文本&#xff08;每行不超过80个字符&#xff09;&#xff0c;写到文件myfile4.txt中,用-1作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText和WriteText实现…

docker 安装nginx_docker安装nginx搭建简单文件共享服务

使用nginx开启目录浏览功能&#xff0c;实现简单的http文件共享服务。一、 首先拉取nginx镜像&#xff0c;我使用的是arm32v7/nginx镜像。docker pull arm32v7/nginx二、运行一个临时的nginx实例&#xff0c;复制容器内的nginx.conf配置文件到主机上docker run --name tmp-ngin…

java _web之Servlet简单应用

Servlet是一种独立于平台和协议的服务器端的Java应用程序&#xff0c;可以生成动态的web页面。它担当Web浏览器或其他http客户程序发出请求、与http服务器上的数据库或应用程序之间交互的中间层。 所谓动态网页&#xff0c;就是在不同时刻或不同条件下访问Web服务器上的同一个页…

BZOJ4516: [Sdoi2016]生成魔咒

BZOJ4516: [Sdoi2016]生成魔咒 Description 魔咒串由许多魔咒字符组成&#xff0c;魔咒字符可以用数字表示。例如可以将魔咒字符 1、2 拼凑起来形成一个魔咒串 [1,2]。一个魔咒串 S 的非空字串被称为魔咒串 S 的生成魔咒。例如 S[1,2,1] 时&#xff0c;它的生成魔咒有 [1]、[2]…

matlab画泡面图,MATLAB中,( )函数可以保存图像并指定为图像文件格式。

The word "tunnel visioned "(Para 3, Line 2) most probably means______ .[解析] 男&#xff1a;简直不敢相信&#xff0c;我通过了所有考试。 女&#xff1a;被我说中了吧&#xff0c;看看你前几天&#xff0c;不是晚上失眠就是白天在屋子里走来走去的&#xff0c…

全国计算机等级考试题库二级C操作题100套(第57套)

第57套&#xff1a; 函数fun的功能是&#xff1a;把形参a所指数组中的最小值放在元素a[0]中&#xff0c;接着把 形参a所指数组中的最大值放在a[1]元素中&#xff1b;再把a所指数组元素中的次小值放 在a[2]中&#xff0c;把a所指数组元素中的次大值放在a[3]&#xff1b;其余以此…

mysql redis hbase_MySQL之基本介绍

MySQL基本介绍在学习任何一款编程语言的过程中&#xff0c;我们会发现如果我们想要存储一些数据到本地硬盘的时候无疑是有些麻烦的。今天&#xff0c;我们就学一个和储存数据有关的数据库管理系统——MySQL。为啥要学会使用数据库呢&#xff1f;因为数据库可以方便的将数据存放…

POJ-1556 The Doors 线段相交+最短路

题意&#xff1a;在一个矩形平面内&#xff0c;有若干道墙&#xff0c;现求从左部某一点到右部某一点的最短路径。 解法&#xff1a;有一个事实是线路一定是从门两边的点上通过的&#xff0c;不可能出现从中间穿过的可能。因此我们就枚举两两点之间是否可达&#xff0c;这里就要…

【matlab】Matlab三维绘图指南

Matlab是一种强大的数学计算和可视化工具,而三维绘图是其功能之一。通过Matlab的三维绘图功能,我们可以创建精美、直观的三维图形,展示和分析复杂的数据。本文将为您提供一份简明的Matlab三维绘图指南,帮助您快速上手并创建出令人印象深刻的三维图形。 准备数据在开始绘制三…

laravel mysql视图,在 Laravel 视图文件中引入 bootstrap

如何在 Laravel 视图文件中引入 bootstrap&#xff1f;对于从来没有接触过 PHP 开发框架的菜鸟来说&#xff0c;这确实是个问题。在我们这些菜鸟传统的认知里&#xff0c;要在一个 html/php 文件里引入一个外部 css 文件&#xff0c;link 标签 href 属性的值&#xff0c;应该填…

全国计算机等级考试题库二级C操作题100套(第58套)

第58套&#xff1a; 给定程序中&#xff0c;函数fun的功能是&#xff1a;把形参s所指字符串中最右边的n个字符复制 到形参t所指字符数组中&#xff0c;形成一个新串。若s所指字符串的长度小于n&#xff0c;则将整个 字符串复制到形参t所指字符数组中。例如&#xff0c;形参s所…

linux mysql 修改root密码_Mac下重置mysql的root密码

php中文网最新课程每日17点准时技术干货分享我的mysql版本 MYSQL V5.7.9&#xff0c;旧版本请使用&#xff1a;UPDATE mysql.user SET PasswordPASSWORD(新密码) WHERE Userroot;Mac OS X - 重置 MySQL Root密码密码太多记不住&#xff1f;&#xff1f;你是否忘记了Mac OS 的My…