ArrayListのArrayListを調べ、空のものをすべて削除します。これを行うための高速かつ効率的な方法はありますか?それ以外の場合はforループと思いますか?JavaでArrayListからすべての空のArrayListを削除します
例出力リレー:
[[アレック、ジョー、線]、[]、[エリック、ヤコブ]、[]]
次のようになります。
[[アレック、ジョー、線]、[エリック、ヤコブ]]このような
ArrayListのArrayListを調べ、空のものをすべて削除します。これを行うための高速かつ効率的な方法はありますか?それ以外の場合はforループと思いますか?JavaでArrayListからすべての空のArrayListを削除します
例出力リレー:
[[アレック、ジョー、線]、[]、[エリック、ヤコブ]、[]]
次のようになります。
[[アレック、ジョー、線]、[エリック、ヤコブ]]このような
何かで十分です。
nestedArrayList = nestedArrayList.stream()
.filter(e -> !e.isEmpty())
.collect(Collectors.toCollection(ArrayList::new));
またはZabuzaを示唆しているとして、あなたはremoveIf
を使用することができます。
nestedArrayList.removeIf(ArrayList::isEmpty);
私見私は理由のカップルのための第二のアプローチで行くと思いますが、最も重要なのようにそれを読んで、「もし削除nestedArrayList ArrayListが空です "は、コードのより良い意図を理解しやすくしています。
Aomineにより投稿されたり、このようなイテレータとして上記のラムダ:
package com.company;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
public class Main {
public static void main(String[] args) {
ArrayList<ArrayList<Integer>> lista = new ArrayList<>(){{
add(new ArrayList<>(Arrays.asList(1,2,3)));
add(new ArrayList<>());
}};
Iterator<ArrayList<Integer>> iter = lista.iterator();
while(iter.hasNext()){
if (iter.next().isEmpty())
iter.remove();
}
System.out.println(lista);
}
}
が実際に再集すべての必要がない完璧 – Alec
勤務。あなたはインプレースでそれを行うことができます。 'List#removeIf'を使うと非常に便利です。 – Zabuza
@Zabuza真実、その場合のオーバーヘッドは少なくなります。 –