2012-02-17 9 views
18

Mam TreeSet, który zawiera> 100k obiektów. Mam inną metodę, która wymaga ArrayList jako parametr.Przekształcanie zestawu TreeSet w ArrayList?

Czy jest jakiś sposób mogę tego dokonać bez iteracji całego zestawu drzewiastego, a następnie ręcznego dodawania każdego obiektu do ArrayList?

+0

Czy to możliwe, aby odpocząć podpis metody otrzymywania zaledwie Collection? W ten sposób nie jest potrzebne kopiowanie. –

Odpowiedz

43

Jak o tym:

new ArrayList<T>(set); 
+3

To jest najlepsze, co dostaniesz. Nie ma rozwiązania, które nie wymaga czasu liniowego. –

3

ArrayList ma metodę ogólnospożywczy addAll który pasuje do ustawy ładnie:

final Set<Object> set = ... 
List<Object> list = new ArrayList<Object>(someBigNum); 
list.addAll(set); 
+4

someBigNum może być set.size() –

+1

someBigNum jest bardzo mylące tutaj ... Nie potrzebujesz dużej liczby. Po prostu potrzebujesz set.size(), jak zauważył kuldeep. –