
com.artclod.common.collect.ArrayFList Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of functional-collections Show documentation
Show all versions of functional-collections Show documentation
FCollections is a series of function style Java Collections
package com.artclod.common.collect;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.function.Function;
import com.artclod.common.collect.base.BaseFList;
import com.artclod.common.collect.builder.CollectionBuilder;
import com.google.common.collect.Lists;
public class ArrayFList extends BaseFList> {
private static final long serialVersionUID = 1L;
public static ArrayFList wrap(ArrayList inner) {
return new ArrayFList(inner);
}
public static ArrayFList create() {
return new ArrayFList(Lists.newArrayList());
}
public static ArrayFList createWithCapacity(int initialCapacity) {
return new ArrayFList(Lists.newArrayListWithCapacity(initialCapacity));
}
@SafeVarargs
public static ArrayFList create(E... elements) {
return new ArrayFList(Lists.newArrayList(elements));
}
public static ArrayFList create(Iterable extends E> elements) {
return new ArrayFList(Lists.newArrayList(elements));
}
public static ArrayFList create(Iterator extends E> elements) {
return new ArrayFList(Lists.newArrayList(elements));
}
public ArrayFList(ArrayList inner) {
super(inner);
}
// This exist so we can create a CollectionBuilder of the right type
static class ArrayFListBuilder extends ArrayFList implements CollectionBuilder> {
private static final long serialVersionUID = 1L;
public ArrayFListBuilder(ArrayList inner) {
super(inner);
}
@Override
public ArrayFList build() {
return this;
}
}
@Override
protected CollectionBuilder> builder() {
return new ArrayFListBuilder(new ArrayList());
}
@Override
public ArrayFList map(Function super E, ? extends O> f) {
ArrayList create = Lists.newArrayListWithCapacity(inner.size());
for (int i = 0; i < inner.size(); i++) {
create.add(f.apply(inner.get(i)));
}
return new ArrayFList(create);
}
@Override
public ArrayFList flatMap(Function super E, ? extends Collection extends O>> mapper) {
ArrayList create = Lists.newArrayList();
for (int i = 0; i < inner.size(); i++) {
create.addAll(mapper.apply(inner.get(i)));
}
return new ArrayFList(create);
}
// === Looping Methods
// Looping without creating in iterator is faster so we reimplement some methods for speed
public String mkString(String start, String sep, String end) {
StringBuilder ret = new StringBuilder(start);
for (int i = 0; i < inner.size(); i++) {
ret.append(inner.get(i));
if (i != (inner.size() - 1)) {
ret.append(sep);
}
}
return ret.append(end).toString();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy