Here you can find the source of getRandom(Collection
public static <V> V getRandom(Collection<V> collection)
//package com.java2s; /**/*from ww w .j a v a2s. co m*/ * Copyright (C) 2012 Philip W. Sorst <philip@sorst.net> * and individual contributors as indicated * by the @authors tag. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import java.util.Collection; import java.util.Iterator; public class Main { public static <V> V getRandom(Collection<V> collection) { if (collection.isEmpty()) { return null; } int randIdx = (int) Math.round(Math.random() * (collection.size() - 1)); int count = 0; Iterator<V> iterator = collection.iterator(); while (iterator.hasNext()) { V current = iterator.next(); if (count == randIdx) { return current; } count++; } throw new RuntimeException("Shouldn't happen"); } /** * Nullsafe check if a collection is empty. * * @param obj * Null or a subclass of Collection. * @throws IllegalArgumentException * Thrown if obj is not null and not an instance of Collection. */ public static boolean isEmpty(Object obj) { if (obj == null) { return true; } if (obj instanceof Collection) { return ((Collection<?>) obj).isEmpty(); } throw new IllegalArgumentException("Given Object was not a collection"); } }