zoukankan      html  css  js  c++  java
  • Java数据结构

    1. Java数组只能表示固定数目的元素,为了更方便表示不固定数量的一组元素引入了集合,集合只能存放引用类型,不能存放基本类型。操作数组的工具类是Arrays,操作集合的工具类是Collection
    2. Java中的集合顶层接口是Iterator《——Collection《——List、Set、Queue(JDK5新增),其中List表示一组连续的元素可重复,Set表示不可重复的一组元素。List的实现类有ArrayList(数组实现,随机访问效率高、但插入修改要移动元素影响性能)、LinkedList(插入修改性能高、随机访问要遍历才行)、Vertor(线程安全实现很少用)。Set的实现类有HashSet(根据元素hashCode值定位元素索引,采用拉链法解决hash冲突,只允许一个null元素,元素无顺序)、LinkedHashSet(在HashSet基础上用List记录了元素的加入顺序)、TreeSet(基于红黑树实现,可实现集合元素的排序)。
    3. JAVA中另一类常用的集合接口是Map,它存储一组键值对,它常用的实现类有HashMap(基于数组+链表实现,JDK8中增加了红黑树,当链表长度》8时用树代替链表,里面的键值对无顺序)、LinkedHashMap(在HashMap基础上用LinkedList记录了元素的插入顺序,进而支持按插入顺序输出)、TreeMap(采用红黑树实现,支持按默认和自定义方式排序),这些Map都是非线程安全的,如果要线程安全,可以调用Collections中对应的包装方法生成线程安全的类,或者是用JDK5新增的 ConcurrentHashMap。
    4. 红黑树是一种比较平衡的二叉树,在最坏情况下也能保证插入、删除、查找数据在O(logn)复杂度下完成,虽查找效率可能不如AVL树,但后者为了维持树的平衡,树结点变动时要花更多性能维护,所以从综合性能看JAVA中的TreeMap、C++中的STL都使用红黑树来实现。可以通过2-3-4树来更好的理解红黑树的插入结点变动过程。
    5. B树、B+树、B*树是更多分叉的树,主要用在海量数据结构中,很多数据库索引是通过B+树实现。
  • 相关阅读:
    [No000068]document.body.clientHeight 和 document.documentElement.clientHeight 的区别
    [No000067]Js中获取当前页面的滚动条纵坐标位置scrollTop
    jquery 给a标签绑定click
    java 延时
    MySQL建表语句+添加注释
    ubuntu 搜狗输入法内存占用太多,卡顿不够处理办法
    org.apache.http.client.HttpClient使用方法
    json 文件打读取
    bootStrap @media 用法
    java web项目获取项目路径
  • 原文地址:https://www.cnblogs.com/doit8791/p/7835300.html
Copyright © 2011-2022 走看看