`

java集合框架分析(工作两年后)

    博客分类:
  • java
 
阅读更多

一 ArrayList,可自动扩充容量的动态数组


  以前金蝶中间件的研发总经理张勇和其他人都说过,java的集合框架源码写的很牛B,看了ArrayList后,开始明白他们的意思了。
  ArrayList基于数组实现,然后,初始化,add,remove的方法,都很具有逻辑性,需要推敲才能理解好,所以代码会巧妙,而且Sun的人写代码比较简洁
  所以ArrayList的代码有两个特点:
  1.每个方法有算法逻辑
  2.每个方法很简洁,没什么冗余代码

 

二 LinkedList 双向循环列表


LinkedList是基于双向---循环的列表,双向循环的特性用的很彻底
所以head元素被用到的地方很多,add,addBefore()和remove这些方法都用到了
非常具有算法逻辑!值得借鉴!
http://www.iteye.com/topic/553199

 

三 Hashmap 数组+链表实现(第三年)


http://uuubd.iteye.com/blog/1447129
http://zhangshixi.iteye.com/blog/672697

负载因子默认是7.5,如果越大,空间利用率越好,但会增加查询时间也越多
hash数据的空间利用率越高,但是为什么查询时间越多呢?
答:简单原因是:不管负载因子多大,都存在hash冲突,但负载因子大的时候,冲突
在同一个位置上的对象越多,所以,遍历链表时查询的时间花的更多
举个特殊例子:
hashmap已知条件如下:
1.初始大小16
2.hash数组长度为16
3.负载因子为0.75(0.25)
4.hashmap最多容纳12(4)个对象
但是如果发生冲突时,所有对象,但hash到同一个位置上,
当负载因子为0.75,需要遍历的链表长度为4
当负载因子为0.75,需要遍历的链表长度为12
由此看出负载因子越大,查询时间越多

补充一点:也许你会觉得hash到同一个位置上的情况太特殊了,不够信服力,但是我的同事鲍超告诉我,但负载因子越大,冲突的概率越大,无冲突的概率却小
这点可以通过分步(不是分类,这是高中数学统计概的方法,复习一下)的方式来计算概率
有空自己计算一下,我明白了,再过一段时间,我自己在纸上再算一次

哈哈,终于明白负载因子越大,空间利用越大,但查询时间也会越多,所以默认0.75是折中的做法啦!!!

 

分享到:
评论

相关推荐

    java2年工作经验简历_java简历.doc

    2. **集合框架**:熟悉Java集合框架,包括ArrayList、LinkedList、HashSet、HashMap等容器的使用,了解它们的底层实现和性能特点,以及如何根据需求选择合适的集合类型。 3. **异常处理**:了解如何使用try-catch-...

    JAVA面试大全,适合2年以内工作者

    对于Java集合框架,熟练掌握ArrayList、LinkedList、HashMap、HashSet、TreeMap等集合的特性和使用场景,以及并发集合如ConcurrentHashMap和CopyOnWriteArrayList的应用,能够体现候选人的实战经验。 除此之外,...

    Java面试要点(适用于2年以上经验,1年亦可)

    Java 面试要点(适用于 2 年以上经验,1 年亦可) Java 是一种广泛使用的编程语言,涵盖了基础知识、JVM、并发、锁、分布式等领域。以下是Java面试要点的详细知识点总结: 基础篇 1. JVM 内存结构:堆、栈、方法...

    近30GJava视频教程集合

    接着,Java集合框架是另一个重要部分,包括ArrayList、LinkedList、HashSet、HashMap等数据结构的使用。这些工具在处理数据时提供了极大的灵活性和效率,视频可能有专门的章节进行教学。 异常处理是Java编程中不可...

    Java技术_开发心得_两年开发经验_(文章汇总...热)

    2. **集合框架**:Java的集合框架是编程中频繁使用的工具,如List、Set、Map接口以及ArrayList、HashSet、HashMap等实现类。理解它们的特性和应用场景是关键。 3. **IO流**:Java的IO系统提供了处理输入输出的强大...

    java 最新两年试卷

    4. **集合框架**:ArrayList、LinkedList、HashSet、HashMap等是Java集合框架的核心类,试卷可能考察它们的特性和使用场景,以及遍历、添加、删除元素的方法。 5. **字符串处理**:String类在Java中非常常用,试卷...

    JAVA简历更新,三年工作经验.doc

    1. **Java基础**:吴春雷有扎实的Java基础知识,能够使用多线程和线程池,熟悉集合框架和IO类库,且编程习惯良好。 2. **主流框架**:他对Spring、SpringBoot、SpringMVC和MyBatis等主流Java框架有深入理解和实践...

    2018JAVA最新框架面试题

    JAVA 框架面试题 本文将从 Spring、SpringMvc 和 Mybatis 三个方面对 JAVA 框架进行了详细的知识点整理。 Spring 1. Spring 在 SSM 中起什么作用?...从 2010 年后 Ibatis 没有更新,彻底变成了一个孤儿框架。

    Java脚本编程:语言、框架与模式

    集合框架提供了一种更灵活的方式来管理对象集合。 #### 3. 面向对象编程(OOP) - **封装**:将数据和操作数据的方法绑定在一起形成一个整体,即类。 - **继承**:子类可以继承父类的属性和行为。 - **多态**:允许...

    Java面试问题2023集合

    在准备2023年的Java求职面试时,深入理解Java集合框架是至关重要的。这个集合框架是Java编程语言的核心组成部分,它提供了数据结构和算法的基础,使得开发者能够高效地存储、管理和操作对象。以下是一些关于Java集合...

    2022年40个Java集合面试问题和答案.docx

    Java集合框架是Java编程语言中用于管理和操作对象集合的一个核心组件。它提供了一组接口、类和算法,方便程序员高效地处理数据集合。Java集合框架的出现极大地简化了数据存储和处理的过程,降低了开发成本,并提高了...

    北大青鸟 Java 教材 第7章描述详细,有示例及图解.

    北大青鸟 Java 教材第7章主要介绍了Java中的日期和时间处理、集合框架和数学运算等内容。下面是本章的详细知识点: 一、java.util 包 java.util 包提供了许多有用的类和接口,用于处理日期、时间、集合和数学运算...

    Java常用工具类大全,工作5年精心整理.zip

    1. **`java.util.ArrayList`与`java.util.LinkedList`**:这两个是Java集合框架中的重要类,分别代表动态数组和链表。ArrayList适合于随机访问,而LinkedList适用于频繁的插入和删除操作。 2. **`java.util.HashMap...

    18年秋招JAVA面经精心整理总结

    Java面试经验整理涉及了Java集合框架的核心知识点,特别是List、Set和Map三个接口及其子接口和实现类的特性、用途和性能比较。以下是对这部分内容的知识点总结: 1. Java集合框架结构 Java集合框架由Collection...

    java Date类和集合

    Java中的集合框架包括`ArrayList`, `LinkedList`, `HashSet`, `HashMap`等。数组虽然在固定大小和访问速度上有优势,但它们不支持动态扩展,也不利于元素的增删,因此在处理不确定数量的数据时,集合显得更有优势。 ...

    XXX-JAVA开发工程师-2年经验简历模板

    熟练掌握Java基础知识包括但不限于类与对象的概念、继承与多态的应用、异常处理机制、集合框架(如List、Set、Map等)的使用等。 - **逻辑思维能力**:在编程过程中,具备良好的逻辑思维能力对于解决复杂问题至关...

    2014年阿里巴巴java工程师电话面试题目

    本知识点根据2014年阿里巴巴Java工程师电话面试题目的相关信息,总结了Java集合框架相关的重要知识点。 Java集合框架是Java编程语言提供的一套接口和类,用于存储和操作对象的集合。这个框架的设计目标是提高代码的...

    java总结以及框架整合案例

    Java集合框架包括List、Set、Map等接口和ArrayList、LinkedList、HashSet、HashMap等实现类。这些类提供了数据存储和操作的高效手段,例如ArrayList适合随机访问,LinkedList适合插入和删除,HashMap则提供了键值对...

    2023年JAVA面试核心知识点整理(283页).pdf

    * ArrayList 和 LinkedList:ArrayList 和 LinkedList 是 Java 集合框架中的两个重要的实现类,分别用于实现动态数组和链表。 * HashSet 和 TreeSet:HashSet 和 TreeSet 是 Java 集合框架中的两个重要的实现类,...

    2023年经典java道面试题集合

    Java 面试题集合 Java 是一门流行的编程语言,广泛应用于 Android 开发、Web 开发、企业软件开发等领域。了解 Java 的基础知识是每个 Java 开发者的必修课。本文将对 Java 面试题集合进行解读,涵盖 Java 基础、...

Global site tag (gtag.js) - Google Analytics