La conversión de LinkedHashSet a ArrayList o simplemente usando ArrayList

TTaJTa4:

Considere el siguiente código:

final Set<String> allPaths = new HashSet<String>();
for (final String path: paths) {
        allPaths.add(path);
}
final MyData d = new MyData(new ArrayList<String>(allPaths));

MyDataes una clase que no debería tocar. Debe hacerse una ArrayListcomo argumento. Antes de este día, hemos utilizado de esa manera porque no importa el orden, es por eso que hemos utilizado Set(por lo que no se duplicará). Pero ahora, me gustaría mantener el orden de los elementos, por lo que después de algunas investigaciones, descubrí que puedo usar la estructura de datos LinkedHashSet con el fin de hacerlo. Así que lo hice:

final LinkedHashSet<String> allPaths = new LinkedHashSet<String>();
for (final String path: paths) {
        allPaths .add(path);
}
final MyData d = new MyData(new ArrayList<String>(allPaths));

El problema es que no estoy seguro de cómo convertir LinkedHashSeta ArrayList. Además, he pensado en utilizar ArrayListen lugar de LinkedHashSetpor lo que no tendrá que convertir, pero voy a tener que iterar sobre la matriz ( O(n)).

Lo bueno, limpio y effiect manera debo usar?

Daniel B.:

Sólo tiene que utilizar el public boolean addAll(Collection<? extends E> c)método, en el arrayList, acepta ninguna Collection.

Usted tiene su LinkedHashSet:

final LinkedHashSet<String> allPaths = new LinkedHashSet<String>();
for (final String path: paths) {
        allPaths .add(path);
}

y luego hacer (se puede usar esto incluso si mylistno está vacío):

List<String> myList = new ArrayList<>();
mylist.addAll(allPaths);

o incluso para un enfoque más simple:

List<String> myList = new ArrayList<>(allPaths);

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=119835&siteId=1
Recomendado
Clasificación