2022年2022年集合框架的各自区别 .pdf
《2022年2022年集合框架的各自区别 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年集合框架的各自区别 .pdf(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Collection:List 、Set 、Map 、HashMap 、HashTable 区别和联系如何在它们之间选择一、 Array ,Arrays Java所有 “ 存储及随机访问一连串对象” 的做法, array 是最有效率的一种。1、效率高,但容量固定且无法动态改变。array 还有一个缺点是, 无法判断其中实际存有多少元素,length 只是告诉我们array 的容量。2、Java中有一个 Arrays 类,专门用来操作array。arrays 中拥有一组static 函数,equals():比较两个array 是否相等。 array 拥有相同元素个数,且所有对应元素两两相等。fi
2、ll():将值填入array 中。sort():用来对array 进行排序。binarySearch():在排好序的array 中寻找元素。System.arraycopy():array 的复制。二、 Collection ,Map 若撰写程序时不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要使用容器类库, array 不适用。1、Collection 和 Map 的区别容器内每个为之所存储的元素个数不同。Collection 类型者,每个位置只有一个元素。Map 类型者,持有key-value pair,像个小型数据库。2、各自旗下的子类关系Collection -List:将
3、以特定次序存储元素。所以取出来的顺序可能和放入顺序不同。 -ArrayList / LinkedList / Vector -Set : 不能含有重复的元素 -HashSet / TreeSet Map -HashMap -HashTable -TreeMap 3、其他特征* List,Set,Map 将持有对象一律视为Object 型别。* Collection 、List、Set、Map 都是接口,不能实例化。继承自它们的ArrayList, Vector, HashTable,HashMap 是具象 class,这些才可被实例化。* vector 容器确切知道它所持有的对象隶属什么型别。
4、vector 不进行边界检查。三、 Collections Collections 是针对集合类的一个帮助类。提供了一系列静态方法实现对各种集合的搜索、排序、线程完全化等操作。相当于对Array 进行类似操作的类Arrays。如, Collections.max(Collection coll); 取 coll 中最大的元素。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 6 页 - - - - - - - - - Collections.sort(List list);
5、 对 list 中元素排序四、如何选择?1、容器类和Array 的区别、择取* 容器类仅能持有对象引用(指向对象的指针),而不是将对象信息copy 一份至数列某位置。* 一旦将对象置入容器内,便损失了该对象的型别信息。2、* 在各种 Lists中,最好的做法是以ArrayList 作为缺省选择。当插入、删除频繁时,使用LinkedList(); Vector总是比 ArrayList 慢,所以要尽量避免使用。* 在各种 Sets中, HashSet通常优于HashTree(插入、查找) 。只有当需要产生一个经过排序的序列,才用TreeSet 。 HashTree存在的唯一理由:能够维护其内元素
6、的排序状态。* 在各种 Maps 中HashMap 用于快速查找。* 当元素个数固定,用Array,因为 Array 效率是最高的。结论:最常用的是ArrayList,HashSet,HashMap, Array。注意:1、Collection 没有 get()方法来取得某个元素。只能通过iterator() 遍历元素。2、Set 和 Collection 拥有一模一样的接口。3、 List, 可以通过get()方法来一次取出一个元素。使用数字来选择一堆对象中的一个,get(0).。(add/get) 4、一般使用ArrayList。用 LinkedList 构造堆栈stack、队列 queu
7、e。5、Map 用 put(k,v) /get(k) ,还可以使用containsKey()/containsValue() 来检查其中是否含有某个 key/value。HashMap 会利用对象的hashCode 来快速找到key。 * hashing 哈希码就是将对象的信息经过一些转变形成一个独一无二的int 值,这个值存储在一个array 中。我们都知道所有存储结构中,array 查找速度是最快的。所以,可以加速查找。发生碰撞时,让array 指向多个values。即,数组每个位置上又生成一个梿表。6、Map 中元素,可以将key 序列、 value 序列单独抽取出来。使用 keySet
8、()抽取 key 序列,将map 中的所有keys生成一个Set。使用 values()抽取 value 序列,将 map 中的所有values 生成一个Collection 。为什么一个生成Set, 一个生成 Collection?那是因为, key 总是独一无二的, value 允许重复。- 特别介绍 1:HashTableVS HashMap HashTable的应用非常广泛,HashMap 是新框架中用来代替HashTable 的类,也就是说建议使用 HashMap,不要使用HashTable。这里简单分析他们的区别。名师资料总结 - - -精品资料欢迎下载 - - - - - - -
9、 - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 6 页 - - - - - - - - - 1.HashTable的方法是同步的,HashMap 未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector 和 ArrayList 一样。 (最主要的区别)2.HashTable不允许 null 值(key 和 value 都不可以 ),HashMap 允许 null 值(key 和 value 都可以,只容许有一个null 值的 key,可以有多个null 值的 value)。3.HashTable有一个 contains(
10、Object value) ,功能和containsValue(Object value) 功能一样。4.HashTable使用 Enumeration,HashMap 使用 Iterator 。以上只是表面的不同,它们的实现也有很大的不同。5.HashTable中 hash 数组默认大小是11,增加的方式是 old*2+1 。HashMap 中 hash 数组的默认大小是 16,而且一定是2 的指数。6.哈希值的使用不同,HashTable 直接使用对象的hashCode,代码是这样的:int hash = key.hashCode(); int index = (hash & 0 x7FF
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年集合框架的各自区别 2022 集合 框架 各自 区别
限制150内