Java实现随机无重复数字功能
作者:网络转载 发布时间:[ 2012/11/1 10:27:22 ] 推荐标签:
使用数组实现的过程如下所示代码:
import java.util.Random;
/**
* 使用数组实现
* @Description:
* @File: Demo4.java
* @Package None
* @Author Hanyonglu
* @Date 2012-10-18 下午06:27:38
* @Version V1.0
*/
public class Demo4 {
public static void main(String[] args) {
int[] values = new int[20];
Random random = new Random();
for(int i = 0;i < values.length;i++){
int number = random.nextInt(100) + 1;
for(int j = 0;j <= i;j++){
if(number != values[j]){
values[i]=number;
}
}
}
// 遍历数组并打印数据
for(int i = 0;i < values.length;i++){
System.out.print(values[i] + " ");
if(( i + 1 ) % 10 == 0){
System.out.println("
");
}
}
}
}
上面这两个实现过程效率比较低的。因为在每次添加时都要去遍历一下当前列表中是否存在这个数字,时间复杂度是O(N^2)。我们可以这样思考一下:既然涉及到无重复,我们可以想一下HashSet和HashMap的功能。HashSet实现Set接口,Set在数学上的定义是无重复,无次序的集合。而HashMap实现Map,也是不允许重复的Key。这样我们可以使用HashMap或HashSet来实现。
在使用HashMap实现时,只需要将它的key转化成数组Ok了,如下代码:
import java.util.HashMap;
import java.util.Iterator;
import java.util.Random;
import java.util.Map.Entry;
/**
* 使用HashMap实现
* @Description:
* @File: Demo.java
* @Package None
* @Author Hanyonglu
* @Date 2012-10-18 下午06:12:50
* @Version V1.0
*/
public class Demo {
public static void main(String[] args) {
int n = 0;
Object[] values = new Object[20];
Random random = new Random();
HashMap<Object, Object> hashMap = new HashMap<Object, Object>();
// 生成随机数字并存入HashMap
for(int i = 0;i < values.length;i++){
int number = random.nextInt(100) + 1;
hashMap.put(number, i);
}
// 从HashMap导入数组
values = hashMap.keySet().toArray();
// 遍历数组并打印数据
for(int i = 0;i < values.length;i++){
System.out.print(values[i] + " ");
if(( i + 1 ) % 10 == 0){
System.out.println("
");
}
}
// Iterator iter = hashMap.entrySet().iterator();
// // 遍历HashMap
// while (iter.hasNext()) {
// Entry<Integer, Integer> entry = (Entry)iter.next();
// int key = entry.getKey();
// n++;
//
// System.out.print(key + " ");
//
// if(n % 10 == 0){
// System.out.println("
");
// }
// }
}
}
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11