• 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+树实现。
  • 相关阅读:
    进程间的通讯(IPC)方式
    进程间通信IPC之--共享内存
    TMDS协议
    HDMI接口与协议
    HDMI的CEC是如何控制外围互联设备的
    SVN并行开发管理策略
    关于 javascript event flow 的一个bug
    H面试程序(15): 冒泡排序法
    android应用如何启动另外一个apk应用
    [置顶] 一份诚恳的互联网找工作总结和感想(附:怎样花两年时间去面试一个人)
  • 原文地址:https://www.cnblogs.com/doit8791/p/7835300.html
Copyright © 2020-2023  润新知