Các tổ tiên chung cho List<Boolean>
và boolean[]
là Object
, vì vậy trừ khi bạn là okay với allTrue(Object booleans)
, bạn không thể làm điều đó với một phương pháp.
Nếu bạn thay đổi chữ ký phương thức thành allTrue(Iterable<Boolean> booleans)
, tất cả những gì bạn phải làm là tạo Iterator<Boolean>
đặc biệt để duyệt qua mảng boolean.
import java.util.Iterator;
import java.util.NoSuchElementException;
public class BooleanAllTrue {
public static boolean allTrue(Iterable<Boolean> booleans) {
if (booleans == null) return false;
for (Boolean bool : booleans) {
if (!bool) return false;
}
return true;
}
public static Iterable<Boolean> asIterable(final boolean[] booleens) {
return new Iterable<Boolean>() {
public Iterator<Boolean> iterator() {
final boolean[] booleans = booleens;
return new Iterator<Boolean>() {
private int i = 0;
public boolean hasNext() {
return i < booleans.length;
}
public Boolean next() {
if (!hasNext()) throw new NoSuchElementException();
return booleans[i++];
}
public void remove() {throw new UnsupportedOperationException("remove");}
};
}
};
}
public static void main(String [] args) {
System.out.println(allTrue(asIterable(new boolean[]{true, true})));
System.out.println(allTrue(asIterable(new boolean[]{true, false})));
try {
asIterable(new boolean[0]).iterator().next();
} catch (NoSuchElementException e) {
// expected
}
}
}
Và cuối cùng là phương pháp allTrue(boolean[] booleans)
.
public static boolean allTrue(boolean[] booleans) {
return allTrue(asIterable(booleans));
}
Nguồn
2017-02-10 03:14:22
Bạn có đang sử dụng Guava không? – shmosel
xem http://stackoverflow.com/a/5606435/2310289 –
@shmosel No Guava – Kwoppy