|
|
@@ -146,6 +146,11 @@ public abstract class CQueryAbstract<T> implements CQuery<T> {
|
|
|
return IteratorUtils.last(iterator());
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public Optional<T> at(int index) {
|
|
|
+ return IteratorUtils.at(iterator(), index);
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public final CQuery<T> distinct() {
|
|
|
return new CQCollection<>(() -> new HashSet<>(iterator()));
|
|
|
@@ -231,6 +236,12 @@ public abstract class CQueryAbstract<T> implements CQuery<T> {
|
|
|
return source.get().stream();
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public final Optional<T> at(int index) {
|
|
|
+ Collection<T> c = source.get();
|
|
|
+ return c instanceof List ? ListUtils.at((List<T>)c, index) : super.at(index);
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public final Optional<T> last() {
|
|
|
Collection<T> c = source.get();
|
|
|
@@ -301,6 +312,12 @@ public abstract class CQueryAbstract<T> implements CQuery<T> {
|
|
|
return new CQArray<>(source, offset+n, limit);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public Optional<T> at(int index) {
|
|
|
+ T[] array = source.get();
|
|
|
+ return array.length > index ? Optional.of(array[index]) : Optional.empty();
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public final Optional<T> last() {
|
|
|
T[] array = source.get();
|