如何将两个HashSet分别添加到有序的TreeSet中

时间:2013-11-07 12:45:17

标签: java hashset treeset

我在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。

1 个答案:

答案 0 :(得分:3)

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

  

使用Set接口的哈希表和链表实现   可预测的迭代顺序。此实现与HashSet不同   因为它维护着一个贯穿所有链接的双向链表   条目。该链表定义了迭代排序,即   将元素插入集合(插入顺序)的顺序。   请注意,如果重新插入元素,则不会影响插入顺序   进入集合。 (如果s.add(e)是,则将元素e重新插入到集合中   当s.contains(e)在紧接之前返回true时调用   调用。)