All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.artclod.common.collect.ArrayFList Maven / Gradle / Ivy

There is a newer version: 0.0.15
Show newest version
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 elements) {
		return new ArrayFList(Lists.newArrayList(elements));
	}

	public static  ArrayFList create(Iterator 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 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> 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