Conversion LinkedHashSet à ArrayList ou tout simplement en utilisant ArrayList

TTaJTa4:

Considérez le code suivant:

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

MyDataest une classe que je ne devrais pas toucher. Il devrait obtenir un ArrayListargument. Avant ce jour, nous avons utilisé de cette façon parce que nous ne tenions pas de l'ordre, c'est la raison pour laquelle nous avons utilisé Set(donc il n'y aura pas dupliqués). Mais maintenant, je voudrais garder l'ordre des éléments, donc après quelques recherches, j'ai découvert que je peux utiliser la structure de données LinkedHashSet afin de le faire. Alors je l' ai fait:

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

Le problème est, je ne suis pas sûr de savoir comment convertir LinkedHashSetà ArrayList. De plus, je pensé à utiliser au ArrayListlieu de LinkedHashSetje ne vais pas le convertir, mais je vais devoir parcourir la gamme ( O(n)).

A quoi bon, manière propre et effiect dois-je utiliser?

Daniel B.:

Il suffit d' utiliser la public boolean addAll(Collection<? extends E> c)méthode, sur le arrayList, il accepte tout Collection.

Vous avez votre LinkedHashSet:

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

puis faites (vous pouvez utiliser ce même si mylistest vide pas):

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

ou même pour une approche plus simple:

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

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=119830&siteId=1
conseillé
Classement