Есть ли способ восстановить объекты из набора в том же порядке, в котором они были переданы? - PullRequest
2 голосов
/ 17 мая 2011

Мне нужно восстановить элементы интерфейса коллекции Java в том же порядке, в котором они были переданы в набор.

Как это возможно в Java

Ответы [ 2 ]

9 голосов
/ 17 мая 2011

Как насчет LinkedHashSet?

Реализация хеш-таблицы и связанного списка интерфейса Set с предсказуемым порядком итераций.Эта реализация отличается от HashSet тем, что поддерживает двусвязный список, проходящий через все его записи.Этот связанный список определяет порядок итераций, который является порядком, в котором элементы были вставлены в набор (порядок вставки).Обратите внимание, что порядок вставки не изменяется, если элемент повторно вставляется в набор.(Элемент e повторно вставляется в набор s, если s.add (e) вызывается, когда s.contains (e) возвращает true непосредственно перед вызовом.)

4 голосов
/ 17 мая 2011
public class SimpleLinkedHashSetExample {

  public static void main(String[] args) {
    //create object of LinkedHashSet
    LinkedHashSet lhashSet = new LinkedHashSet();

    /*
      Add an Object to LinkedHashSet using
      boolean add(Object obj) method of Java LinkedHashSet class.
      This method adds an element to LinkedHashSet if it is not 
      already present in LinkedHashSet.
      It returns true if the element was added to LinkedHashSet, false otherwise.
    */

    lhashSet.add(new Integer("1"));
    lhashSet.add(new Integer("2"));
    lhashSet.add(new Integer("3"));

    /*
      Please note that add method accepts Objects. Java Primitive values CAN NOT
      be added directly to LinkedHashSet. It must be converted to corrosponding
      wrapper class first.
    */

    System.out.println("LinkedHashSet contains.." + lhashSet);   
  }
}

/*
Output of the program would be
LinkedHashSet contains..[1, 2, 3]
*/ 

Вы можете использовать LinkedhashSet, приведенный выше.

...