
io.horizon.util.CFind Maven / Gradle / Ivy
The newest version!
package io.horizon.util;
import io.horizon.eon.VValue;
import io.horizon.fn.HFn;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.function.Predicate;
/**
* @author lang : 2023/4/30
*/
class CFind {
static JsonObject find(final JsonArray array, final String field, final Object value) {
return HUt.itJArray(array).filter(item -> {
if (Objects.isNull(value)) {
return Objects.isNull(item.getValue(field));
} else {
return value.equals(item.getValue(field));
}
}).findAny().orElse(null);
}
static JsonObject find(final JsonArray array, final JsonObject subsetQ) {
return HUt.itJArray(array).filter(item -> {
final Set keys = subsetQ.fieldNames();
final JsonObject subset = HUt.elementSubset(item, keys);
return subset.equals(subsetQ);
}).findAny().orElse(new JsonObject());
}
static T find(final List list, final Predicate fnFilter) {
return HFn.runOr(() -> {
final List filtered = list.stream().filter(fnFilter).toList();
return HFn.runOr(filtered.isEmpty(),
() -> null,
() -> filtered.get(VValue.IDX));
}, list, fnFilter);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy