0 0

jdk為何不實現各種樹0

jdk中有隊列,堆棧的實現
為何不同時實現各種樹的數據結構?
2014年10月26日 12:01

2个答案 按时间排序 按投票排序

0 0

转我在知乎里对 《为什么大多数编程语言的内建抽象数据类型没有图?》 这个问题的回答,我觉得对树也适用。

1. 一般内建的容器库,其内部表达方式都很有限,例如“表”不外乎数组,链表,哈希。 而链表,队列,栈,环表,哈希之类的数据结构都是架构在这些有限的表述方式上。只要把内部表达实现好,根据一些具体惯用法封装API就好了。而图的种类很多,内部表达方式也不相同(每个结点作为一个独立数据结构持有相邻结点的引用这种方式只不过是图的其中一种表达方案,而且效率往往不高,结点之间的路径往往也需要复杂的数据结构去表达) ,选用哪种表达方式往往会影响到执行效率甚至算法设计。要通用的话,就需要实现所有常用的表达方式,并设计一种方案让这些表达方式与常用算法组合起来,复杂度很可观。

2. 很大一部分涉及图或树的实际问题,有效率的解决方式不是建好图或树后再根据现有的数据结构求解,而是边构造边求解(算法的重点在于如何从现有结点扩展出新的结点)。因此针对固定图或树去设计的算法库应用范围不如想象中大。

3. 考虑到用户的知识结构,对于一般的集合容器,用户能很直观地理解其用法,把具体问题对应到容器API上,而实现过程则显得重复繁琐 :一个入门级的程序员知道该使用表来储存并进行排序,但一时不知道如何实现qsort是常见情况。而对于图,如果用户的知识结构足以根据具体问题对应到图论算法,并选用合适的表述方式来构造好这个图,自己动手实现一些对图的经典操作相对来说没有难度,还能更贴合具体场景。

综上,实现一个图的通用算法库既复杂又没有太大的现实意义,要做库,还不如结合到某类具体场景做一个专用的库(底层用图来实现)。

2014年10月28日 09:35
0 0

你不知道有个东西叫treemap?

2014年10月27日 14:43

相关推荐

    JDK9的API中文版,里面包含了所有JDK9实现的类库

    JDK9允许在接口中定义私有方法,增强了接口的内部实现细节隐藏。此外,接口还可以包含静态默认方法,无需通过实例即可调用,这在编写工具类或单例模式时非常有用。 八、增强的集合框架 集合框架在JDK9中得到扩展,...

    源码解析jdk8.0集合:HashMap的底层实现原理.pdf

    - 新增了红黑树转换的阈值:当链表长度达到8时,如果数组长度不小于64,则将链表转换为红黑树以优化性能。 - 当红黑树中的节点数减少到6以下时,它会退化成链表存储结构。 - Node类替代了旧的Entry类作为底层存储...

    Nashorn与JDK8——动态语言在JVM上的高性能实现.pdf

    Nashorn是Oracle在JDK8中引入的一个全新的JavaScript引擎,它完全基于Java实现,并且完全运行于Java虚拟机(JVM)上。Nashorn的目标是提供一个高性能的JavaScript执行环境,它可以利用Java平台的各种资源和特性,如...

    ConcurrentHashMap的实现原理(JDK1.7和JDK1.8).pdf

    当链表长度超过一定阈值时,链表会转换为红黑树,以实现更快的查找、插入和删除操作。 CAS是一种无锁算法,它通过比较并交换内存中的值来实现原子操作。在`ConcurrentHashMap`中,CAS用于在不使用锁的情况下更新...

    JDK1.4.2官方英文API

    - 引入`java.util.TreeSet`和`java.util.TreeMap`,它们基于红黑树实现,提供了高效的有序集合操作。 - `java.util.LinkedList`的添加,提供了双端队列(Deque)功能。 8. **垃圾回收器优化** JDK 1.4的垃圾回收...

    JDK部分类UML图

    Set接口则不允许元素重复,其主要实现类有HashSet(基于HashMap实现,不保证元素顺序)和TreeSet(基于红黑树,保证元素排序)。Queue接口代表队列,提供了先进先出(FIFO)的数据结构,例如LinkedList可以作为Queue...

    linus安装jdk说明

    以上就是在CentOS下安装JDK的具体步骤以及一个基于jQuery的简单树形菜单插件的主要实现逻辑。这些知识点对于理解如何在Linux环境中配置Java运行环境以及如何利用jQuery开发前端功能具有重要意义。

    Android-jdk源码阅读

    红黑树保证了任何节点到其每个叶子节点的最长路径不超过最短路径的两倍,从而保证了插入、删除和查找操作的平均时间复杂度为O(log n)。 插入数据时,`TreeMap`会创建一个新的红黑树节点,该节点包含待插入的键值对...

    jdk-17_windows-x64_bin.zip

    2. **解压**:解压缩后,通常会得到一个名为`jdk-17.0.1`的文件夹,包含JDK的各种组件和库。 3. **环境变量设置**:为了使系统能够识别JDK17,需要将`jdk-17.0.1\bin`目录添加到系统PATH环境变量中。 4. **验证...

    jdk11的源码src文件

    它支持树形结构的键值对,允许应用程序在不依赖于特定文件系统或注册表的情况下存储配置信息。 3. **jdk.internal.le**: 这个模块涉及到Java的链接服务(Linking Service),是Java运行时环境的一部分,用于处理类...

    最新版JDK参考文档

    在这里,你可以找到所有JDK内置包的详细描述,如`java.lang`、`java.util`、`java.io`等,每个包都包含了大量类和接口,用于实现各种功能,如基本类型操作、集合框架、输入输出等。 3. **Class**: 类(Class)是...

    jdk7 msi 安装包

    安装此 MSI 包将为你的 Windows 系统提供 JDK 7 的运行环境,使你能够编写、编译和运行 Java 7 及其以下版本的代码。在安装过程中,记得遵循提示,选择合适的安装路径,并配置好环境变量,尤其是 `JAVA_HOME` 和 `...

    jdk的src文件

    在Java开发中,JDK(Java Development Kit)是不可或缺的工具,它包含了编译、运行Java程序所需的所有组件。JDK的src.zip文件是一个非常重要的组成部分,它提供了Java标准库的源代码。这个压缩文件包含了大量的.java...

    jdk使用164个实例

    Java JDK,全称为Java Development Kit,是Oracle公司提供的用于开发Java应用程序的重要工具集。它包含了Java编译器、Java运行环境、调试器、性能分析工具以及其他实用工具。JDK使用164个实例,意味着这个压缩包可能...

    通过分析_JDK_源代码研究_TreeMap_红黑树算法实现.docx

    ### 通过分析JDK源代码研究TreeMap红黑树算法实现 #### 一、TreeMap与TreeSet的关系 TreeMap 和 TreeSet 是 Java 集合框架中的重要成员,它们提供了基于红黑树的数据结构实现。从给定部分源代码可以看到,TreeSet ...

    tomcat10,支持jdk11的哈

    - JDK 11是Java SE 11的实现,带来了诸如模块化系统(Project Jigsaw)、HTTP客户端API、增强的开关语句(Switch Expressions)等新特性。Tomcat 10.0.23兼容这一版本,意味着开发者可以利用这些特性来构建和部署在...

    JDK中的设计模式

    Java Development Kit (JDK) 中包含了许多设计模式的应用实例,这些实例不仅展示了设计模式的强大功能,还为Java开发者提供了宝贵的参考。 #### 创建型模式 创建型模式关注的是对象的创建方式。通过这种方式,可以...

    jdk1.8源码

    JDK1.8对`HashMap`和`HashSet`进行了优化,使用了红黑树结构处理大数据量的情况,提高了查找、插入和删除的效率。 九、新的枚举类方法 JDK1.8为`EnumSet`和`EnumMap`增加了新的静态工厂方法,使得创建枚举集合更加...

    jdk1.7版本下载

    Java Development Kit(JDK)是Java编程语言的核心组件,它为开发者提供了编译、调试和运行Java应用程序所需的所有工具。JDK 1.7,也被称为Java 7,是Oracle公司发布的一个重要版本,它在2011年发布,带来了许多新...

Global site tag (gtag.js) - Google Analytics