Java数据结构
2023-09-11 14:18:08 时间
- Java数组只能表示固定数目的元素,为了更方便表示不固定数量的一组元素引入了集合,集合只能存放引用类型,不能存放基本类型。操作数组的工具类是Arrays,操作集合的工具类是Collection
- Java中的集合顶层接口是Iterator《——Collection《——List、Set、Queue(JDK5新增),其中List表示一组连续的元素可重复,Set表示不可重复的一组元素。List的实现类有ArrayList(数组实现,随机访问效率高、但插入修改要移动元素影响性能)、LinkedList(插入修改性能高、随机访问要遍历才行)、Vertor(线程安全实现很少用)。Set的实现类有HashSet(根据元素hashCode值定位元素索引,采用拉链法解决hash冲突,只允许一个null元素,元素无顺序)、LinkedHashSet(在HashSet基础上用List记录了元素的加入顺序)、TreeSet(基于红黑树实现,可实现集合元素的排序)。
- JAVA中另一类常用的集合接口是Map,它存储一组键值对,它常用的实现类有HashMap(基于数组+链表实现,JDK8中增加了红黑树,当链表长度》8时用树代替链表,里面的键值对无顺序)、LinkedHashMap(在HashMap基础上用LinkedList记录了元素的插入顺序,进而支持按插入顺序输出)、TreeMap(采用红黑树实现,支持按默认和自定义方式排序),这些Map都是非线程安全的,如果要线程安全,可以调用Collections中对应的包装方法生成线程安全的类,或者是用JDK5新增的 ConcurrentHashMap。
- 红黑树是一种比较平衡的二叉树,在最坏情况下也能保证插入、删除、查找数据在O(logn)复杂度下完成,虽查找效率可能不如AVL树,但后者为了维持树的平衡,树结点变动时要花更多性能维护,所以从综合性能看JAVA中的TreeMap、C++中的STL都使用红黑树来实现。可以通过2-3-4树来更好的理解红黑树的插入结点变动过程。
- B树、B+树、B*树是更多分叉的树,主要用在海量数据结构中,很多数据库索引是通过B+树实现。
相关文章
- java高级用法之:无所不能的java,本地方法调用实况
- java.util.concurrent简介
- 【JAVA】JSP操作数据库简单实例和mysql-connector-java-5.0.3-bin.jar项目配置方法
- 在idea中SpringBoot2.4.1项目下,会默认使用mysql-connector-java-8.0.22驱动的错误原因
- 为什么Java中一个类可以实现多个接口,但只能继承一个类?
- Java IO: Reader And Writer
- JAVA础--利用java反射机制绕过编译时的类型检查和访问控制检查
- java在Linux执行命令Java在Windows执行命令
- 如何评价《Java 并发编程艺术》这本书?
- Java编程:删除 List 元素的三种正确方法
- 第七节:详细讲解Java中的日期,java.util.date
- 网易Java程序员两轮面试,这些问题你能答对几个?
- Java String 类,超详细整理,适合新手入门
- 【JAVA UI】HarmonyOS Glide简单使用
- 《Java和Android开发实战详解》——2.5节良好的Java程序代码编写风格
- Java 并发工具包 java.util.concurrent 大全
- java提取字符串数字,Java获取字符串中的数字
- Java打印输出:java天龙八部私服
- java 实现数据结构之队列
- Java之throw和throws的区别及java中的异常处理
- 『Java练习生的自我修养』java-se进阶⁴ • IO流概览
- Java学习---TCP Socket的学习
- JAVA学习.java.sql.date 与java.util.date以及gettime()方法的分析
- Java对象的大小
- JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)
- java 数据结构——堆栈和队列
- [java][db]JAVA分布式事务原理及应用
- Eclipse迅速执行:Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
- Java高手技能树:看了大汗淋漓
- Java 下实现锁无关数据结构--转载
- 【JAVA】浅谈java枚举类
- 国产化服务器信创平台ARM架构服务器适配安装编译,包括Java的JDK、在线文件预览kkfileview和LibreOffice的编译、打包、使用,主要包括银河麒麟操作系统和鲲鹏ARM操作系统
- 【Java笔记】配置文件java.util.Properties类的使用
- Java中删除文件、删除目录及目录下所有文件
- java数据结构和算法