Java的类集框架使你的程序处理对象组的方法标准化。在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)存储键/值对。尽管映射在对项的正确使用上不是“类集”,但它们完全用类集集成。在类集框架的语言中,可以获得映射的类集“视图”。这个“视图”包含了从存储在类集中的映射得到的元素。因此,如果选择了一个映射,就可以将其当做一个类集来处理。

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

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

Java基础篇之什么是类集?相关推荐

  1. Java基础篇:介绍嵌套类和内部类

    在另一个类中定义的类就是嵌套类(nested classes).嵌套类的范围由装入它的类的范围限制.这样,如果类B被定义在类A之内,那么B为A所知,然而不被A的外面所知. 嵌套类可以访问嵌套它的类的成 ...

  2. Java基础篇:一个堆栈类

    尽管Box类在说明一个类的必要的元素时是有用的,但它实际应用的价值并不大.为了显示出类的真实的功能,本章将用一个更复杂的例子来说明类的强大功能. 在Java中,就是通过类这样的机制来完成封装性.在创建 ...

  3. Java基础篇:为Box类添加一个方法

    尽管创建一个仅包含数据的类是相当不错的事情,但这样的情况很少发生.大部分情况是你将使用方法存取由类定义的实例变量. 事实上,方法定义大多数类的接口.这允许类实现函数可以把内部数据结构的特定布局隐蔽到方 ...

  4. Java基础篇——类与子类

    1. 什么是类,什么是子类? 类:类是Java程序的基本要素,一个Java应用程序就是由若干个类所构成的.类是Java语言中最重要的"数据类型". 子类:由继承得到的类叫子类. 引 ...

  5. java实现linkstring,【JAVA SE基础篇】32.String类入门

    [JAVA SE基础篇]32.String类入门 1.字符串 1.String类又称作不可变字符序列 2.String位于java.lang包中,java程序默认导入java.lang包下所有的类 3 ...

  6. 菜鸟学习笔记:Java基础篇7(包装类、时间相关类、文件类、异常处理类)

    菜鸟学习笔记:Java其他常用类 基本数据类型包装类 时间处理和文件处理相关类 Date时间类 SimpleDateFormat Calendar日历类 文件类 异常机制 异常的概念 Java异常处理 ...

  7. 【程序员养成之路】Java基础篇 8-流进流出的IO流(二)

    以下内容若有误,欢迎私信我或在下方留言,谢谢^_− 目录 IO流(二) 1.特殊操作流 1.1 标准流 1.2 打印流 1.3 对象序列化流 1.4 Properties 拓展1:比较字节流和字节缓冲 ...

  8. Java基础篇1——变量与数据类型

    Java基础篇1--变量与数据类型 1.标识符命名规则 标识符以由大小写字母.数字.下划线(_)和美元符号($)组成,但是不能以数字开头. 大小写敏感 不能与Java语言的关键字重名 不能和Java类 ...

  9. Java基础篇(03):流程控制语句,和算法应用

    本文源码:GitHub·点这里 || GitEE·点这里 一.分支语句 流程控制语句对任何一门编程语言都是非常重要的,Java中基于流程控制程序执行的不同步骤和代码块. 1.IF条件 IF条件语句会根 ...

最新文章

  1. RVDS2.2安装及破解步骤
  2. html5获取当前坐标,HTML5教程 如何获取当前位置的经纬度
  3. 【职场】公司利益和个人利益,永远不可能完全一致
  4. leetcode406. 根据身高重建队列
  5. 让nginx支持thinkphp rewrite模式
  6. android onclick执行顺序,浅谈onTouch先执行,还是onClick执行(详解)
  7. Octave入门基础
  8. maven ...../.m2/settings.xml
  9. 如何测试服务器端口是否能够访问(使用telnet命令)
  10. Rider编译UE5项目RD报错
  11. 操作系统调度算法理解
  12. 企业邮箱怎么发邮件?企业邮箱无法收发信是怎么回事?
  13. 海马玩安卓模拟器linux,Droid4X 0.8.4 海马玩安卓模拟器 安卓的福音
  14. 2021江苏省高考成绩排名查询,江苏高考成绩排名查询系统,2021年江苏个人成绩一分一段表...
  15. bootstrap typeahead实现模糊查询功能
  16. win10隐藏正在运行的程序怎么操作_win10怎么隐藏正在运行的软件
  17. 光敏电阻5506主要参数_光敏电阻详细参数?
  18. [React Native Development] Camping Spots Finder应用程序用户界面克隆第一部分-地图视图用户界面...
  19. Android 加速度传感器的使用详解
  20. winform屏蔽鼠标事件

热门文章

  1. [转载] 使用Python在ArcGIS中编程杂谈
  2. verilog之门级相关知识
  3. Educational Codeforces Round 10 B. z-sort
  4. [概率][lca][dfs][树形dp] Jzoj P4225 宝藏
  5. java与C++变量类型对应表
  6. ETL第一篇(Kettle Spoon) 初遇
  7. WIZnet推出串口转以太网模块WIZ550S2E
  8. 【ROS学习笔记】(九)参数的使用与编程方法
  9. dubbo原理和机制_面试官几个 Dubbo 微服务框架问题,把我整懵了?
  10. php srem,Redis Srem 命令