2

我正在用 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);

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

4

1 回答 1

3

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

Set 接口的哈希表和链表实现,具有可预测的迭代顺序。此实现与 HashSet 的不同之处在于它维护一个双向链表,该列表贯穿其所有条目。该链表定义了迭代顺序,即元素插入集合的顺序(插入顺序)。请注意,如果将元素重新插入集合中,则插入顺序不受影响。(如果 s.add(e) 被调用,而 s.contains(e) 将在调用之前立即返回 true,则元素 e 被重新插入到集合 s 中。)

于 2013-11-07T12:47:18.273 回答