Konvertieren LinkedHashSet zu Arraylist oder Arraylist mit

TTaJTa4:

Betrachten Sie den folgenden Code:

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

MyDataeinig Klasse soll ich nicht berühren. Es sollte eine bekommen ArrayListals Argument. Vor diesem Tag haben wir auf diese Weise , weil wir nicht über die Reihenfolge scherte, deshalb haben wir Set(so wird es nicht dupliziert werden). Aber jetzt, würde Ich mag die Reihenfolge der Elemente halten, so dass nach einigen Recherchen fand ich heraus , dass ich die Datenstruktur verwenden kann , LinkedHashSet um dies zu tun. So tat ich:

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

Das Problem ist, ich bin nicht sicher , wie zu konvertieren LinkedHashSetzu ArrayList. Auch ich dachte , die Verwendung , ArrayListanstatt LinkedHashSetso ich werde es nicht konvertieren müssen, aber ich werde zu iterieren über die Array ( O(n)).

Was gut, sauber und effiect Weg soll ich verwenden?

Daniel B.:

Verwenden Sie einfach die public boolean addAll(Collection<? extends E> c)Methode, auf der Arraylist, es jeder akzeptiert Collection.

Sie haben Ihre LinkedHashSet:

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

und dann tun (können Sie diese auch verwenden , wenn mylistnicht leer ist ):

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

oder auch nur für einen einfacheren Ansatz:

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

Ich denke du magst

Origin http://43.154.161.224:23101/article/api/json?id=119822&siteId=1
Empfohlen
Rangfolge