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

org.nutz.lang.random.ArrayRandom Maven / Gradle / Ivy

Go to download

Nutz, which is a collections of lightweight frameworks, each of them can be used independently

There is a newer version: 1.r.72
Show newest version
package org.nutz.lang.random;

/**
 * 根据一个数组随机产生对象,每个对象只会被取出一次。 当数组耗尽,则一直返回 null
 * 
 * @author zozoh([email protected])
 */
public class ArrayRandom implements Random {

    private T[] array;
    private Integer len;
    private java.util.Random r = new java.util.Random();
    private Object lock = new Object();

    public ArrayRandom(T[] array) {
        this.array = array;
        len = array.length;
    }

    public T next() {
        synchronized (lock) {
            if (len <= 0)
                return null;
            if (len == 1)
                return array[--len];
            int index = r.nextInt(len);
            if (index == len - 1)
                return array[--len];
            T c = array[index];
            array[index] = array[--len];
            return c;
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy