我在Java中创建RDF语句。我有两个HashSet,并希望将它们都添加到TreeSet中。这是我的代码:
Collection<Statement> model = new HashSet<Statement>();
Collection<Statement> model_1 = new HashSet<Statement>();
Collection<Statement> treeSet = new TreeSet<Statement>();
在将这些语句存储到这两个Hashsets之后,我在TreeSet中添加了它们:这是代码:
treeSet.addAll(model);
treeSet.addAll(model_1);
for (Statement _state : treeSet)
System.out.println(_state);
我认为第一个Hashset“模型”将被添加到TreeSet中,然后分别添加到第二个Hashset“model_1”中。当我循环遍历TreeSet时,它们似乎没有被排序。任何人都可以帮我如何订购TreeSet的元素,我可以添加第一个HashSet,然后分别添加第二个HashSet。
答案 0 :(得分:3)
TreeSet
将对您输入的元素进行排序,而不是您输入的顺序。如果您不需要散列功能,或者可能需要简单的List
就足够了a LinkedHashSet(在迭代时保持插入顺序)
使用Set接口的哈希表和链表实现 可预测的迭代顺序。此实现与HashSet不同 因为它维护着一个贯穿所有链接的双向链表 条目。该链表定义了迭代排序,即 将元素插入集合(插入顺序)的顺序。 请注意,如果重新插入元素,则不会影响插入顺序 进入集合。 (如果s.add(e)是,则将元素e重新插入到集合中 当s.contains(e)在紧接之前返回true时调用 调用。)