This commit is contained in:
Looly 2019-09-11 15:24:27 +08:00
parent 3288f26795
commit 6a9feb0576
2 changed files with 4 additions and 2 deletions

View File

@ -23,6 +23,7 @@
### Bug修复
* 【core】 修复NetUtil.getUsableLocalPort问题pr#69@Gitee
* 【core】 修复MathUtil.arrangementSelect重复元素导致无结果问题issue#529@Gitee
* 【core】 修复RandomUtil.randomEleSet越界问题issue#535@Gitee
-------------------------------------------------------------------------------------------------------------

View File

@ -14,6 +14,7 @@ import java.util.Random;
import java.util.Set;
import java.util.concurrent.ThreadLocalRandom;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
@ -355,13 +356,13 @@ public class RandomUtil {
* @throws IllegalArgumentException 需要的长度大于给定集合非重复总数
*/
public static <T> Set<T> randomEleSet(Collection<T> collection, int count) {
ArrayList<T> source = new ArrayList<>(new HashSet<>(collection));
final ArrayList<T> source = CollUtil.distinct(collection);
if (count > source.size()) {
throw new IllegalArgumentException("Count is larger than collection distinct size !");
}
final HashSet<T> result = new HashSet<T>(count);
int limit = collection.size();
int limit = source.size();
while (result.size() < count) {
result.add(randomEle(source, limit));
}