【问题标题】:Why are bags considered unordered?为什么袋子被认为是无序的?
【发布时间】:2020-01-02 23:41:05
【问题描述】:

包存储在数组中。我知道我们可以根据需要更改包的大小等。但是,由于它存储在数组中,它基本上有一个索引号,不是吗?这种情况下,为什么还要说它是无序的呢?

【问题讨论】:

    标签: java bag


    【解决方案1】:

    包存储在数组中

    不,他们不是。

    实际上,它们可能是,具体取决于实现,但它们肯定不是必须的。这就像说List 存储在一个数组中。那是例如ArrayList 为真,LinkedList 则不为真。

    那么baglistset有什么区别呢?

    • 列表有序的,允许重复

      • 按值查找通常很慢。
      • ArrayList 实现使用数组,按位置快速查找。
      • LinkedList 实现使用双向链接节点,在列表开头快速插入/删除。
    • 集合无序的,没有重复

    • 无序的,允许重复

      • 没有内置的 Java 支持。如果需要,一般只使用List
        如果需要快速按值查找,建议使用第三方库。

    是术语的定义,它指定了 有序无序 语义。包的实现可能会保持排序,但通用术语不需要它。


    让我们澄清一下关于 Java 中 bags 的困惑。

    它们都没有指定一个包是一个列表,也没有一个使用数组来实现包。

    【讨论】:

    • 第一点是区别的关键,因为 Arrays 和 Bags 是 java.util.List 的子项,我相信 Yuan 要求澄清。这实际上就是您实施的方式。通常使用 Hibernate 查找包以进行查询,并且有必要使用实施策略。 this has a good explanation from Java.org
    • @Kevin “包是 java.util.List 的子项” 不,它们不是。 Java 运行时库没有任何 Bag 类型。
    • 哎呀!你是对的,我正在考虑实现 List 的 PersistentBag 的上下文。谢谢你的收获!
    猜你喜欢
    • 2016-10-17
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-27
    • 2017-10-21
    • 2016-06-07
    相关资源
    最近更新 更多