Resclone/src/main/java/io/gitlab/jfronny/resclone/util/ListAdaptation.java

32 lines
1.1 KiB
Java

package io.gitlab.jfronny.resclone.util;
import io.gitlab.jfronny.commons.serialize.SerializeReader;
import io.gitlab.jfronny.commons.throwable.ThrowingFunction;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
public class ListAdaptation {
public static <T, TEx extends Exception, Reader extends SerializeReader<TEx, Reader>> List<T> deserializeList(Reader reader, ThrowingFunction<Reader, T, TEx> deserializeOne) throws TEx {
List<T> result = new ArrayList<>();
reader.beginArray();
while (reader.hasNext()) {
result.add(deserializeOne.apply(reader));
}
reader.endArray();
return result;
}
public static <T, TEx extends Exception, Reader extends SerializeReader<TEx, Reader>> Set<T> deserializeSet(Reader reader, ThrowingFunction<Reader, T, TEx> serializeOne) throws TEx {
Set<T> result = new LinkedHashSet<>();
reader.beginArray();
while (reader.hasNext()) {
result.add(serializeOne.apply(reader));
}
reader.endArray();
return result;
}
}