ArrayListにLinkedHashSetの変換またはちょうどのArrayListを使用して

TTaJTa4:

次のコードを考えてみます。

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

MyData私は触れてはならないいくつかのクラスです。これは、取得する必要ArrayListの引数として。我々は、我々が使用した理由であるため、気にしませんでしたので、この日の前に、我々はその方法を使用しSet(これが重複することはありません)。しかし、今、私は要素の順序を維持したいと思いますので、いくつかの研究の後、私は、データ構造を使用できることがわかったLinkedHashSet そうするために。だから私はやりました:

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

問題は、私は確信して変換する方法はないよ、であるLinkedHashSetArrayListまた、私が使って考えるArrayList代わりにLinkedHashSet、私はそれを変換する必要はありませんが、私は、配列を反復処理する必要がありますので、( O(n))。

何が良い、私が使用する必要があり、清潔でeffiect方法はありますか?

ダニエルB.:

ただ、使用public boolean addAll(Collection<? extends E> c)ArrayListの上で、それは任意の受け入れ、方法をCollection

あなたは、あなたが持っていますLinkedHashSet

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

その後、(場合でも、あなたはこれを使用することができないmylist空ではありません):

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

あるいは単純なアプローチのために:

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

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=119828&siteId=1