ネールヴァーサ:
与えられた入力ArrayListの私のためにすべての主要なまたは非ゼロ要素の間で0が残っているしたいのですが、ArrayListの末尾にある0の任意の数を取り除きたいです。
入力:
0、11、0、0、0、11、11、0、0、0
予想される出力:
0、11、0、0、0、11、11
私の解決策:
private List<Integer> foo() {
List<Integer> list = Arrays.asList(0, 11, 0, 0, 0, 11, 11, 0, 0, 0);
Collections.reverse(list);
Iterator<Integer> iterator = list.iterator();
int i = 0;
while (iterator.hasNext() && 0 != iterator.next()) {
++i;
}
return list.subList(0, i);
}
何が私が間違っているのでしょうか?これを行うには良い方法はありますか?
azurefrog:
それはだ場合は確かに、ちょうど最後の要素を取り除きます0
。そうでないまで繰り返します。
たとえば、
List<Integer> list = new ArrayList<>(Arrays.asList(0, 11, 0, 0, 0, 11, 11, 0, 0, 0));
while (list.get(list.size()-1) == 0) {
list.remove(list.size()-1);
}
System.out.println(list); // [0, 11, 0, 0, 0, 11, 11]