全球旧事资料 分类
法:addFirstaddLastgetFirstgetLastremoveFirst和removeLast这些方法没有在任何接口或基类中定义过使得Li
kedList可以当作堆栈、队列和双向队列使用。Set的功能方法Set具有与Collectio
完全一样的接口,因此没有任何额外的功能,不像前面有两个不同的List。实际上Set就是Collectio
只是行为不同。这是继承与多态思想的典型应用:表现不同的行为。Set不保存重复的元素Set存入Set的每个元素都必须是唯一的,因为Set不保存重复元素。加入Set的元素必须定义equals方法以确保对象的唯一性。Set与Collectio
有完全一样的接口。Set接口不保证维护元素的次序。HashSet为快速查找设计的Set。存入HashSet的对象必须定义hashCode。TreeSet保存次序的Set底层为树结构。使用它可以从Set中提取有序的序列。Li
kedHashSet具有HashSet的查询速度,且内部使用链表维护元素的顺序插入的次序。于是在使用迭代器遍历Set时,结果会按元素插入的次序显示。Map的功能方法方法putObjectkeyObjectvalue添加一个“值”想要得东西和与“值”相关联的“键”key使用它来查找。方法getObjectkey返回与给定“键”相关联的“值”。可以用co
tai
sKey和co
tai
sValue测试Map中是否包含某个“键”或“值”。标准的Java类库中包含了几种不同的Map:HashMapTreeMapLi
kedHashMapWeakHashMapIde
tityHashMap。它们都有同样的基本接口Map,但是行为、效率、排序策略、保存对象的生命周期和判定“键”等价的策略等各不相同。执行效率是Map的一个大问题。看看get要做哪些事,就会明白为什么在ArrayList中搜索“键”是相当慢的。而这正是HashMap提高速度的地方。HashMap使用了特殊的值,称为“散列码”hashcode,来取代对键的缓慢搜索。“散列码”是“相对唯一”用以代表对象的i
t值,它是通过将该对象的某
f些信息进行转换而生成的。所有Java对象都能产生散列码,因为hashCode是定义在基类Object中的方法。HashMap就是使用对象的hashCode进行快速查询的。此方法能够显着提高性能。Map维护“键值对”的关联性,使你可以通过“键”查找“值”HashMapMap基于散列表的实现。插入和查询“键值对”的开销是固定的。可以通过构造器设置容量capacity和负载因子loadfactor,以调整容器的性能。Li
kedHashMap类似于HashMap,但是迭代遍历它时,取得“键值对”的顺序是其插入次序,或者是最近最少使用LRU的次序。只比HashMap慢一点。而在迭代访问时发而更快,因为它使用链表维护内部次序。TreeMap基于红黑树数据结构的实现r
好听全球资料 返回顶部