Java 杂谈

collections相关的数据结构及API

2018-06-30  本文已影响2人  代码墨白

1、列举几个Java Collection类库中的常用类 此处应该有Collection类

Collection是java.util 中的一个接口。继承自Iterable。

子接口:List、Set、Queue...

实现类:ArrayList、LinkedList、HashSet、TreeSet、Vector、Stack

 其他相关类:Iterator、TreeMap、HashTable、HashMap Collection接口是最基本的集合接口,它不提供直接的实现,Java SDK提供的类都是继承自Collection的"子接口" 如List和Set。

Collection所代表的是一种规则,它所包含的元素都必须遵循一条或者多条规则。 如有些允许重复而有些则不能重复、有些必须要按照顺序插入而有些则是散列,有些支持排序但是有些则不支持。

2、List、Set、Map是否都继承自Collection接口?

List、Set继承自Collection接口,而Map不是。

(1)List 所代表的是有序的Collection。实现List接口的集合主要有:ArratList、LinkedList、Vector、Stack。

(2) Set是一种不包括重复元素的Collection。实现了Set接口的集合有:EnumSet、HashSet、TreeSet。

(3)Map与List、Set接口不同,它是由一系列键值对组成的集合,提供了key到Value的映射。同时它也没有继承Collection。 实现map的有:HashMap、TreeMap、HashTable、Properties、EnumMap。

Java初高级一起学习分享,共同学习才是最明智的选择,喜欢的话可以我的学习群64弍46衣3凌9,或加资料群69似64陆0吧3(进群备注平台名)

3、HashMap和Hashtable的区别 需查看源码。

1、历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现 。

2、同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的 。

3、值:只有HashMap可以让你将空值作为一个表的条目的key或value 。 1.HashTable的方法是同步的,在方法的前面都有synchronized来同步,HashMap未经同步,所以在多线程场合要手动同步 2.HashTable不允许null值(key和value都不可以) ,HashMap允许null值(key和value都可以)。 3.HashTable有一个contains(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 & 0x7FFFFFFF) % tab.length; 而HashMap重新计算hash值,而且用与代替求模:

提问/互动请留言,可直接在最底右下方"写留言即可" 如果觉得写得不错请点击“订阅”,每天更新全新的内容! 你们的喜欢和关注就是我最大的动力支撑!!!

上一篇下一篇

猜你喜欢

热点阅读