package aQute.lib.collections;

import java.util.ArrayList;
import java.util.Collection;

public class ExtList<T> extends ArrayList<T> {
	private static final long serialVersionUID = 1L;

	@SafeVarargs
	public ExtList(T... ts) {
		super(ts.length);
		for (T t : ts) {
			add(t);
		}
	}

	public ExtList(int size) {
		super(size);
	}

	public ExtList(Collection< ? extends T> col) {
		super(col);
	}

	public ExtList(Iterable< ? extends T> col) {
		for (T t : col)
			add(t);
	}

	public static ExtList<String> from(String s) {
		// TODO make sure no \ before comma
		return from(s, "\\s*,\\s*");
	}

	public static ExtList<String> from(String s, String delimeter) {
		ExtList<String> result = new ExtList<String>();
		String[] parts = s.split(delimeter);
		for (String p : parts)
			result.add(p);
		return result;
	}

	public String join() {
		return join(",");
	}

	public String join(String del) {
		StringBuilder sb = new StringBuilder();
		String d = "";
		for (T t : this) {
			sb.append(d);
			d = del;
			if (t != null)
				sb.append(t);
		}
		return sb.toString();
	}

}
