![JAR search and dependency download from the Maven repository](/logo.png)
no.arktekk.siren.Fields Maven / Gradle / Ivy
package no.arktekk.siren;
import io.vavr.collection.Iterator;
import io.vavr.collection.List;
import no.arktekk.siren.util.StreamableIterable;
import java.util.function.Function;
public final class Fields implements StreamableIterable {
private final List fields;
private Fields(List fields) {
this.fields = fields;
}
public Fields(Iterable fields) {
this(List.ofAll(fields));
}
public static Fields of(Field field, Field ... fields) {
return new Fields(List.of(fields).prepend(field));
}
public Fields replace(Field field) {
return remove(field.name).add(field);
}
public Fields add(Field field) {
return new Fields(fields.append(field));
}
public Fields remove(String name) {
return new Fields(fields.filter(f -> !f.name.equals(name)));
}
public List map(Function super Field, ? extends U> mapper) {
return fields.map(mapper);
}
public List flatMap(Function super Field, ? extends Iterable extends U>> mapper) {
return fields.flatMap(mapper);
}
public Iterator iterator() {
return fields.iterator();
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Fields fields1 = (Fields) o;
return fields.equals(fields1.fields);
}
@Override
public int hashCode() {
return fields.hashCode();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy