【问题标题】:How to add two HashSets into an ordered TreeSet respectively如何将两个 HashSet 分别添加到有序 TreeSet 中
【发布时间】:2013-11-07 12:45:17
【问题描述】:

我正在用 Java 创建 RDF 语句。例如,我有两个 HashSet,并且想将它们都添加到 TreeSet 中。这是我的代码:

Collection<Statement> model = new HashSet<Statement>();
Collection<Statement> model_1 = new HashSet<Statement>();
Collection<Statement> treeSet = new TreeSet<Statement>();

将一些语句存储到这两个 Hashset 中后,我将它们都添加到 TreeSet 中:代码如下:

treeSet.addAll(model);
treeSet.addAll(model_1);
for (Statement _state : treeSet)
     System.out.println(_state);

我认为第一个哈希集“模型”将被添加到树集中,然后是第二个哈希集“模型_1”。当我遍历 TreeSet 时,它们似乎没有被排序。谁能帮助我如何以一种我可以分别添加第一个 HashSet 和第二个的方式对 TreeSet 的元素进行排序。

【问题讨论】:

    标签: java hashset treeset


    【解决方案1】:

    TreeSet 将按您输入的元素排序,而不是按您放入的顺序。如果您不需要散列功能,一个简单的 List 可能就足够了,或者可能是 LinkedHashSet (在迭代时保持插入顺序)

    Set接口的哈希表和链表实现,带有 可预测的迭代顺序。此实现不同于 HashSet 因为它维护一个双向链表,贯穿其所有 条目。这个链表定义了迭代顺序,即 元素插入集合的顺序(插入顺序)。 请注意,如果重新插入元素,则插入顺序不受影响 进入集合。 (如果 s.add(e) 为 当 s.contains(e) 在 调用。)

    【讨论】:

    • 非常感谢您的帮助。它现在正在工作。我创建了一个简单的 Arraylist 并将它们添加到该 Arraylist 中。我已经遍历了列表并向我展示了预期的结果。非常感谢。
    • 一般来说,sets 是没有顺序的。
    猜你喜欢
    • 2020-10-10
    • 2013-12-05
    • 2021-12-08
    • 2015-12-29
    • 2018-11-16
    • 2015-08-16
    • 1970-01-01
    • 2012-05-09
    • 1970-01-01
    相关资源
    最近更新 更多