JAVA编程思想读书笔记(二)--容器
第八章.对象的容纳
No1:
java提供了四种类型的集合类:Vector(矢量)、BitSet(位集)、Stack(堆栈)、Hashtable(散列表)
No2:
为什么不能将基本数据类型置入集合里?
首先,集合的存在就是为了方便对多个对象的操作才出现的,集合是存储对象最常用的一种方式,也就是说,集合的从有到无都是因为对象,人们发现要保存多个对象很麻烦,于是便发明了集合,集合是依赖对象而生的,所以就对基本数据类型"不感兴趣",但是,现在基本数据类型都有了其对应的封装的对象,而且有了自动拆箱和装箱功能,基本数据类型和其对应对象之间的转换变得很方便,想把基本数据类型存入集合中,直接存就可以了,系统会自动将其装箱成封装类然后加入集合当中
No3:
Set(接口)添加到Set的每个元素都必须是独一无二的;否则Set就不会添加重复的元素。添加到Set里的对象必须定义equals(),从而建立对象的唯一性。Set拥有与Collection完全相同的接口。一个Set不能保证自己可按任何特定的顺序维持自己的元素
HashSet用于除非常小的以外的所有Set。对象也必须定义hashCode()
ArraySet由一个数组后推得到的Set。面向非常小的Set设计,特别是那些需要频繁创建和删除的。对于小Set,与HashSet相比,ArraySet创建和反复所需付出的代价都要小得多。但随着Set的增大,它的性能也会大打折扣。不需要HashCode()
TreeSet由一个“红黑树”后推得到的顺序Set。这样一来,我们就可以从一个Set里得到一个顺序集合
No4:
Map(接口)维持“键-值”对应关系(对),以便通过一个键查找对应的值
HashMap基于一个散列表实现(用它代替HashTable)针对“键-值”对的插入和检索,这种形式具有最稳定的性能。可通过构建器对这一性能进行调整,以便设置散列表的“能力”和“装载因子”
ArrayMap由一个ArrayList后推得到的Map。对反复的顺序提供了精确的控制。面向非常小的Map设计,特别是那些需要经常创建和删除的。对于非常小的Map,创建和反复所付出的代价要比HashMap低得多。但在Map变大以后,性能也会相应的大幅度降低
TreeMap在一个“红-黑”树的基础上实现。查看键或者“键-值”对时,它们会按固定的顺序排列(取决于Comparable或Comparator)TreeMap最大的好处就是我们得到的是已排好序的结果。TreeMap是含有subMap()方法的位移一种Map,利用它可以返回树的一部分
No5:
进行add()以及contain()操作时,HashSet显然要比ArraySet出色的多,而且性能明显与元素的多寡关系不大,一般编写程序的时候,几乎永远用不着使用ArraySet