`
frenchmay
  • 浏览: 232530 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

三种非常见的功能性集合类和低效的linkedlist随机访问方法

阅读更多

这个周末看过奥运会的开幕式后就开始java2 核心技术 卷II:高级特性。
因为最近做线程方面的开发,需要一些具有特殊特性的集合类,因此对上面那本书的内容做了一下整理,这些功能性集合类都是为了解决某一特点场景而提出的。
1 weekhashmap 弱散列映射表
映射表中存在除了该映射表本身已经不存在其他引用的键值对,我们无法移除该键值对。但是由于映射表还是存在引用,因此这个键值对会一直无法被垃圾回收器回收。会导致映射表的性能下降,很容易超出指定容量。
weekhashmap 使用弱引用来持有键,weakreference对象用于持有散列表键对象的引用。
垃圾回收器会对不拥有任何引用的对象进行垃圾回收,也会对只拥有weakreference的对象进行垃圾回收。
weekhashmap 在运行期间维护并定期检查一个弱引用队列,然后移除相关联的键值对项。
很适合实现全局的,临时的快速存取策略。
2 linkedhashset和linkedhashmap 链接散列表和链接散列映射表
能够记录插入元素的顺序,使用双向链表实现。
但是当访问元素的时候,linkedhashmap 遵循“最近最少使用”的原则。可以使用这样一个定容量的linkedhashmap 来实现缓存策略。
3 identityhashmap 标示散列映射表
键的散列码不是由hashcode方法来计算的,而是由system.indentityhashcode方法计算的,这是object.hashcode方法根据对象的内存地址来计算散列值的方法。因此identityhashmap 使用==引用比较而不是equals来对各个对象进行比较。
4 linkedlist低效随机访问方法
因为链表不支持快速的随机访问,因此如果想访问链表中的第n的元素,必须要跳过前面的n-1个元素。因此在必须使用整数索引来访问数据的情况下,一般使用arraylist。
对于linkedlist的get(int index)
for(int i=0;i<list.size();i++){

        list.get(i);

}

效率极低

 

分享到:
评论

相关推荐

    java面试葵花宝典.doc

    ArrayList、Vector 和 LinkedList 是 Java 中三种常用的集合类,每种集合类都有其特点和适用场景: * ArrayList:基于数组实现的集合类,随机访问效率高。 * Vector:基于数组实现的集合类,线程安全的。 * ...

    java笔试题大汇总

    - `finalize`方法是Object类的一个方法,用于垃圾回收前的清理工作,但在现代Java中已不推荐使用,因为它的不确定性和低效性。 以上是Java笔试题中涉及的一些关键知识点,理解这些概念对于深入掌握Java编程至关重要...

    java知识点总结

    3. **equals和hashCode**:当使用HashMap、HashSet等散列表集合时,需要重写`equals`和`hashCode`方法,以确保集合的正确行为。 4. **散列冲突处理**:散列表可能会遇到散列冲突,这时需要通过比较元素来确定是否...

    Java数据结构和算法..

    数组是最基础的数据结构,它提供了一种按索引访问元素的方式,但插入和删除操作相对低效。链表弥补了这一缺点,允许高效地添加和删除元素,但访问元素的速度较慢。栈和队列是两种特殊的线性结构,栈遵循“后进先出”...

    JAVA数据结构

    10. **集合框架**:Java集合框架提供了一套接口和类,如List、Set和Map,它们是构建复杂数据结构的基础。理解这些接口和类的特性和使用方式,能帮助开发者更好地组织和管理数据。 在学习Java数据结构时,不仅要掌握...

    蚂蚁金服(2018)java 面试题(内部资料)

    #### 三、ArrayList 和 LinkedList 原理、区别及底层数据结构 - **ArrayList**: - 基于动态数组实现,提供随机访问的高效性。 - 扩容机制通常是在数组容量不足时创建一个更大的数组,并将原有元素复制过去。 - ...

    java数据结构源码

    Java的`java.util.Deque`接口和`java.util.LinkedList`类提供了双向链表的功能。 深入理解这些数据结构的源码,可以洞悉其内部实现机制,提高编程技巧,更好地解决实际问题。通过分析Java数据结构源码,开发者可以...

    java常见面试题

    例如,在创建一个`Person`类的对象时,每个`Person`实例都有自己的属性(如姓名、年龄)和方法(如`sayHello()`)。对象之间通过方法调用来相互作用。 - **值类型**:值类型直接在栈内存中存储具体的值,包括所有的...

    20道公司java面试题B

    Java集合框架包括List、Set、Queue和Map等接口,以及它们的实现类如ArrayList、LinkedList、HashSet、HashMap等。理解它们的特点和适用场景是Java程序员必备的知识。 以上只是Java面试中可能会涉及的部分知识点,...

    POO

    10. **集合框架**:Java集合框架是处理对象集合的一系列接口和类,如ArrayList、LinkedList、HashMap等,它们提供了存储、查找和操作数据的方法。 11. **泛型**:泛型引入了类型参数,增强了代码的类型安全性和重用...

    矢量数据的批量叠加相交分析

    iObjects是SuperMap公司提供的一个全面的GIS开发组件库,它包含了一系列接口和类,能够帮助开发者构建功能强大的GIS应用。在这个场景下,我们使用iObjects Java API来处理矢量数据,进行相交分析。相交分析是GIS中的...

    datastructures:此 repo 包含一些常见数据结构相关算法的示例代码

    在Java中,数组提供了随机访问能力,但插入和删除操作相对低效,因为它们可能涉及大量元素的移动。 2. 链表(LinkedList):链表由一系列节点组成,每个节点包含数据和指向下一个节点的引用。与数组相比,链表在...

    让Java代码更高效

    8. **合理使用集合类**:理解不同集合类的底层实现,如`ArrayList`与`LinkedList`的增删查改效率差异,根据实际需求选择。 9. **多线程优化**:合理使用同步机制,避免过度同步导致的阻塞,同时注意线程间的通信...

Global site tag (gtag.js) - Google Analytics