【问题标题】:What are the go-to data structures in Java? [closed]Java中的首选数据结构是什么? [关闭]
【发布时间】:2013-02-28 11:03:54
【问题描述】:

在 Python 中,如果您了解标准的 'list'、'tuple'、'set' 和 'dictionary',就可以走得更远。这些是任何体面的 Python 程序员都应该知道的基本数据结构。

这些数据结构的 Java 等价物是什么,还有其他值得注意的数据结构吗?

【问题讨论】:

  • 在 Java 中,有 SetListMap 接口(您必须选择要使用的实现)。不幸的是,没有 tuple 的等价物。
  • @nhahtdh 除了不可修改的List<Object> 之外,您希望tuple 的等效项如何工作?
  • 这不是一个严肃的问题。别偷懒,5 秒内可谷歌搜索。
  • @arne.b:您可以通过编写通用的Pair 来“模拟”元组并将其重用于更高维度的元组。不过,这很丑陋。如果元组要多次出现,我会上课。

标签: java list data-structures dictionary set


【解决方案1】:

遗憾的是,Java 中没有原生元组,大多数时候你都使用:

  • List:ArrayList(是List,List是Collection)
  • Set:HashSet(是一个集合,一个集合是一个集合)
  • 字典:HashMap(是 Map,但 Map 不是 Collection)

看一下 Java 集合的一般情况:http://docs.oracle.com/javase/tutorial/collections/index.html 并发:http://docs.oracle.com/javase/tutorial/essential/concurrency/collections.html

有很多外部库(Guava、Apache、...)

【讨论】:

    【解决方案2】:

    您可以使用 LinkedList、HashMap、HashSet 做很多事情,而且我们还有字典 http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Dictionary.html

    学习任何新语言的最佳方法是阅读代码。 GitHub 托管了大量的开源 Java 应用程序。您可以在这里查看最新消息:https://github.com/languages/Java

    【讨论】:

    • 那个 Dictionary 类已经过时了
    • 谢谢克里斯托夫。看起来它从 1.6 开始就被删除了。最新的搜索结果指向Hashtable。正如其他人所提到的,了解generics 是一个好主意。
    【解决方案3】:

    this 有帮助吗?

    Java 有它所有的数据结构,包括集合、列表、HashMap,在Java Collections Framework 中定义。 HashMap 本质上等同于字典。

    至于等价的元组,请查看unmodifiableList

    【讨论】:

      【解决方案4】:

      在 Java 中,他有一个万能的工具:class。对于你在 Python 中使用元组或字典解决的大多数问题,在 Java 中你编写一个自定义类,其中包含实例变量、构造函数、getter 和 setter。因此,在使用 Java 时,请准备好编写一些样板文件。

      就数据结构而言,默认的是ArrayListHashSetHashMap。有排序版本:TreeSetTreeMap——当你需要它们时,它们非常有用。

      当您需要接近金属的性能时,您将求助于阵列。

      在 Java 中,您还喜欢内置的并发性,但它变得复杂:有像 ConcurrentHashSet/Map 这样的高性能选项,还有围绕普通集合的同步包装器:Collections/synchronizedSet/Map/List(这些是返回包装对象的方法)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-13
        • 1970-01-01
        • 2010-09-05
        相关资源
        最近更新 更多