当我们编写程序时,通常并不能确切地知道最终需要多少个对象。有些时候甚至想用更复杂的方式来保存对象。为解决这个问题,Java 提供了四种类型的“集合类”:Vector(矢量)、BitSet(位集)、Stack(堆栈)以及Hashtable(散列表)。
Stack 实现了一个 LIFO(后进先出)序列,而 Hashtable 是一种“关联数组”,允许我们将任何对象关联起来。除此以外,所有Java 集合类都能自动改变自身的大小。
缺点:类型未知 使用Java 集合的“缺点”是在将对象置入一个集合时丢失了类型信息。由于类型信息不复存在,所以集合能肯定的唯一事情就是自己容纳的是指向一个对象的句柄。
Vector是同步的,线程安全的,当元素超过Vector的初始大小时,Vector的容量会翻倍。Vector类似数组顺序数据结构。
Hashtable的方法是同步的,提供key到value的映射,任何作为key的对象都必须实现hashCode和equals方 法。hashCode和equals方法继承自根类Object,如果两个对象相同,即obj1.equals(obj2)=true,则它们的hashCode必须相同,但如果两个对象不同,则它们的hashCode不一定不同,如果两个不同对象的hashCode相同,这种现象称为冲突,冲突会导致操作哈希表的时间开销增大,所以尽量定义好的hashCode()方法,能加快哈希 表的操作。
BitSet实际是由“二进制位”构成的一个 Vector。如果希望高效率地保存大量“开-关”信息,就应使用
BitSet。它只有从尺寸的角度看才有意义;如果希望的高效率的访问,那么它的速度会比使用一些固有类型
的数组慢一些。
此外,BitSet的最小长度是一个长整数(Long)的长度:64 位。这意味着假如我们准备保存比这更小的数
据,如8 位数据,那么BitSet就显得浪费了。
分享到:
相关推荐
很值得一看的书籍,很多人都推荐,适合有一定java基础的人学习提高
Think in java 读书笔记 java教程
王者归来之--Java编程思想读书笔记 Think in java4th
学习 Think In Java 之后的总结,一些学习笔记,提供学习
java 很好的java学习文档,是学习java的入门基础,谢谢你的下载
Python学习笔记--皮大庆,非常适合零基础入门。对应英文版本《How to think like a computer scientist》
think in java 第四版 源码以及作业 eclipse版本 包含jar包 可以直接导入eclipse
第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 实现方案的隐藏 1.4 方案的重复使用 1.5 继承:重新使用接口 ...1.7.1 集合与继承器 ...1.12.6 阶段4:校订 1.12.7 计划的回报 1.13 Java还是C++?
Think in java 源码构建编译
think in java 源码整理,应该算是比较全面的,有需要的朋友可以下下来看下
Think-In-Java-Code Thinking In Java 书中源码以及课后练习代码(从第7章开始随着看书的进度一步步更新) 第七章 复用类 7.1 组合语法 7.2 继承语法 7.2.1 初始化基类 7.3 代理 7.4 结合使用组合和继承 7.4.1 确保...
JAVA思想中文版,CHM格式.
经典的think in java4,所有源码,帮你早日攻克java学习的堡垒!!!
Think in java 的代码源码,里面很详细的习题详解
java3think in java笔记(111)---打印 (2008-04-24 16:58:28) 标签:杂谈 1 默认情况下,print()方法会调用paint()来完成自己的工作。 2 选择一种字体和大小,决定字符串在页面上存在的位置,并且使用Graphics...
这是一本充满智慧的书,与简单的参考书有着截然不同的风格。它现在已成了我进行Java 创作一份主要参考。你的目录做得相当不错,让人一目了然,很快就能找到自己需要的东西。
java think in java (英文第四版)至今为止 被认为是java教程之中权威作品之一
Think Data Structures in Java 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
Think4V-UtubeDown-setup-3.2.6.exe
这是java编程思想中的练习题,自己感觉不错,上传上去给大家分享~~~~~