Back to project page android-plotter.
The source code is released under:
Apache License
If you think the Android project android-plotter listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package org.solovyev.android.plotter.meshes; //from w ww . ja v a 2 s.c o m import javax.annotation.Nonnull; import java.util.ArrayList; import java.util.List; public final class ListPool<M extends Mesh> implements Pool<M> { public ListPool(@Nonnull Callback<M> callback) { this.callback = callback; } @Nonnull private final List<M> list = new ArrayList<M>(); @Nonnull private final Callback<M> callback; @Nonnull @Override public M obtain() { final int poolSize = list.size(); final M mesh; if (poolSize > 0) { mesh = list.remove(poolSize - 1); } else { mesh = callback.create(); } return mesh; } @Override public void release(@Nonnull M mesh) { callback.release(mesh); list.add(mesh); } @Override public void clear() { while (!list.isEmpty()) { callback.release(list.remove(list.size() - 1)); } } public static interface Callback<M extends Mesh> { @Nonnull M create(); void release(@Nonnull M mesh); } }