在使用Set in Java(Selenium)时,我从下到上获取值 - 而不是从上到下

时间:2017-02-14 04:15:27

标签: java selenium

    Set<Integer> set=new HashSet<Integer>();
    set.add(41);
    set.add(52);
    set.add(33);

    Iterator<Integer> iterate=set.iterator();
    System.out.println(iterate.next());
    System.out.println(iterate.next());
    System.out.println(iterate.next());

O / P-&GT; 33 52 41 相反,我应该得到41,52和33

Plz解释为什么以这种方式打印或者我做错了。

1 个答案:

答案 0 :(得分:0)

您必须使用LinkedHashSet保留Set中的广告订单。
LinkedHashSet旨在保留广告订单。来自JavaDocs

  

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

请参阅问题Ordering of elements in Java HashSet,了解HashSet中的排序方式。来自JavaDocs:

  

此类实现Set接口,由哈希表支持   (实际上是一个HashMap实例)。它不能保证   集合的迭代顺序;特别是,它并不保证   订单将随时间保持不变。此类允许null   元件。