JAVA工具类cn.hutool.core.util.RandomUtil,随机数生成,用它就够了!
Posted 好好生活_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA工具类cn.hutool.core.util.RandomUtil,随机数生成,用它就够了!相关的知识,希望对你有一定的参考价值。
引言
前段时间做了一个项目的需求,很多地方都需要用到随机,比如从指定的数据集合中随机抽取一个,随机抽取几个不重复,从指定范围内随机生成固定小数位的数字等等。
对于涉及数据库的查询,mysql中有提供随机函数,但必然会影响查询效率,而且底层框架使用mybatis-plus,不再写什么sql,另一方面对于不涉及数据库的查询,又该如何处理呢?
所以我想到的是使用随机数,于是发现了这次要分享的cn.hutool.core.util包下的工具类RandomUtil,里面提供了很多方法,使用起来很方便。
依赖
如果你的项目中,没有添加hutool依赖,可以先添加以下依赖:
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.5.16</version>
</dependency>
使用示例
1. 生成一个随机整数
int i1 = RandomUtil.randomInt();
2. 指定范围内生成一个随机整数
int i2 = RandomUtil.randomInt(100);
3. 随机生成boolean值
boolean b = RandomUtil.randomBoolean();
boolean的使用对于两者随机选其一的场景就很方便。
4. 指定范围随机生成一个double类型数值,并保留固定小数位
int total = 3;
DecimalFormat df = new DecimalFormat("0.00%");
double v;
if (total < 10)
v = RandomUtil.randomDouble(0.3, 0.5, 4, RoundingMode.HALF_UP);
else
v = RandomUtil.randomDouble(0.7, 0.95, 4, RoundingMode.HALF_UP);
String rates = df.format(v);
//结果形如30.57%
System.out.println(rates);
上述方法为根据total值,从指定范围内随机生成一个double值,整数位+小数位总共四位,并使用DecimalFormat将对应数值转换为百分比格式。
对于其它类型,像BigDecimal、String、Long等类型都有对应的方法。这里就不一一列举了。
下面介绍从指定集合中随机获取指定数量的集合方法:
5. 从指定集合List中返回指定数量的List,示例如下:
List<Word> wordList = Arrays.asList(new Word(1, "ability", "A"),
new Word(2, "baby", "B"),
new Word(3, "basketball", "B"),
new Word(4, "abandon", "A"),
new Word(5, "cat", "C"),
new Word(6, "car", "C"),
new Word(7, "random", "R"),
new Word(8, "lock", "L"));
List<Word> words = RandomUtil.randomEles(wordList, 2);
以上方法获取到的结果可能会有重复的,而想要得到不重复的结果,我们可以用RandomUtil.randomEleSet方法,得到的结果是一个Set集合。
6. 从指定集合List中返回指定数量的Set,示例如下:
List<Word> wordList = Arrays.asList(new Word(1, "ability", "A"),
new Word(2, "baby", "B"),
new Word(3, "basketball", "B"),
new Word(4, "abandon", "A"),
new Word(5, "cat", "C"),
new Word(6, "car", "C"),
new Word(7, "random", "R"),
new Word(8, "lock", "L"));
Set<Word> words = RandomUtil.randomEleSet(wordList, 2);
总结
在RandomUtil中,还提供了ThreadLocalRandom、SecureRandom适用于并发多线程、需要考虑安全性的场景,方法很多。
善于发现,善于思考,使得开发工作也变得简单了很多。
以上是关于JAVA工具类cn.hutool.core.util.RandomUtil,随机数生成,用它就够了!的主要内容,如果未能解决你的问题,请参考以下文章