Как реверсировать коллекцию объектов в Java
В этом примере показано, как обратить содержимое LinkedList вызвав метод Collections: class: Collections.reverse() . В качестве коллекции объектов мы выбрали LinkedList. Этот же метод применим и к другим коллекциям, которые наследуются от интерфейса java.util.Collection. В качестве параметра необходимо передать экземпляр LinkedList. Этот метод используется для обратного порядка элементов в списке.
Example:
Этот код обрабатывает следующие три коллекции Java-объектов: ArrayList, LinkedList и Vector.
Example:
Этот код обрабатывает следующие три коллекции Java-объектов: ArrayList, LinkedList и Vector.
import java.util.Collections;Result:
import java.util.LinkedList;
public class inverse_collection {
public static void main(String[] args) {
LinkedListllist = new LinkedList ();
llist.add("1");
llist.add("2");
llist.add("3");
llist.add("4");
System.out.println("Перед инверсией: "+llist);
Collections.reverse(llist);
System.out.println("После инверсии: "+llist);
}
}
Перед инверсией: [1, 2, 3, 4]Коллекции, наследуемые от java.util.Set и java.util.Map, не поддерживаются методом Collections.reverse(). Однако частичное решение возможно:
После инверсии: [4, 3, 2, 1]
- Создать экземпляр ArrayList с коллекцией из интерфейса Set или Map
- Применить метод Collections.reverse() к ArrayList
- Элементы не могут быть скопированы обратно в исходную коллекцию. Зачем? Поскольку интерфейс Set не гарантирует порядок вставки.
Примечание: Интерфейс Map представляет собой хеш-таблицу ключ/значение. Это означает, что у нас есть выбор только инвертировать ключи или значения, не копируя результаты обратно в коллекцию, реализующую Map, потому что она не сохраняет порядок элементов. |
Пример TreeSet:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.TreeSet;
public class Intervert {
public static void main(String[] args) {
// создание TreeSet
TreeSettset = new TreeSet ();
// добавляем элементы в treeset
tset.add("a");
tset.add("b");
tset.add("c");
Iterator iterator = tset.iterator();
// отображение TreeSet
System.out.println("Элементы древовидного набора в порядке возрастания: ");
while (iterator.hasNext()){
System.out.println(iterator.next());
}
Listlist = new ArrayList (tset);
Collections.reverse(list);
// обратное отображение значений
System.out.println("Элементы treeset в обратном порядке: ");
for(String s:list)
System.out.println(s);
}
}
Output:
Элементы treeset в порядке возрастания:
a
b
c
treeset в обратном порядке:
c
b
a