Java ArrayList如何实现生成不重复随机数

 更新时间:2020年09月25日 15:53:05   作者:勤快的懒羊羊  
这篇文章主要介绍了Java ArrayList如何实现生成不重复随机数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

在此之前我使用Java的数组实现了产生N-M之间的不重复的随机数,下面是使用数列ArrayList实现同样的功能,代码如下:

/**
   * 随机生成 N--M,N个不重复随机数 使用ArrayList
   *
   * @param startRange 起始数字
   * @param endRange  终止数字
   * @param count   个数
   */
  public static ArrayList<Integer> getRandom(int startRange, int endRange, int count) {
    ArrayList<Integer> arr = new ArrayList<>();
    for (int i = 0; i < count; i++) {
      arr.add(((int) (Math.random() * (endRange - startRange + 1) + startRange)));
      for (int j = 0; j < i; j++) {
        if (arr.get(i) == arr.get(j)) {
          arr.remove(i);
          i--;
          break;
        }
      }
    }
    return arr;
  }

这个实现的原理和使用数组基本一致,但是需要注意的几点,我这里是使用的一个返回序列,参数只有起始值、终值和个数,然后定义了一个ArrayList数列,使用数列的add方法,接收每一个产生的随机数,并使用For循环进行判断是否重复,如果重复外循环 i -- ,但是这里需要注意的是:此时ArrayList里面已经存放了当前的重复的值了,所以不能只用 i --,还需要使用梳理的remove方法将此不符合条件的数移除,这里是需要注意的,如果不写着一句,在小的范围内生成的随机数很可能会出现死循环。

下面是成功运行的截图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • maven中profile动态打包不同环境配置文件的实现

    maven中profile动态打包不同环境配置文件的实现

    开发项目时会遇到这个问题:开发环境,测试环境,生产环境的配置文件不同, 打包时经常要手动更改配置文件,本文就来介绍一下maven中profile动态打包不同环境配置文件的实现,感兴趣的可以了解一下
    2023-10-10
  • SpringMVC将请求和响应的数据转换为JSON格式的几种方式

    SpringMVC将请求和响应的数据转换为JSON格式的几种方式

    这篇文章主要给大家介绍饿了SpringMVC将请求和响应的数据转换为JSON格式的几种方式,文中通过代码示例和图文结合给大家介绍的非常详细,具有一定的参考价值,需要的朋友可以参考下
    2023-11-11
  • Java 阻塞队列和线程池原理分析

    Java 阻塞队列和线程池原理分析

    这篇文章主要介绍了Java 阻塞队列和线程池原理分析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 解读ResultSet的遍历方法

    解读ResultSet的遍历方法

    这篇文章主要介绍了ResultSet的遍历方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • tk.mybatis扩展通用接口使用详解

    tk.mybatis扩展通用接口使用详解

    这篇文章主要介绍了tk.mybatis扩展通用接口使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Java线性结构中栈、队列和串的基本概念和特点详解

    Java线性结构中栈、队列和串的基本概念和特点详解

    前几天小编给大家介绍了Java线性结构中的链表,除了链表这种结构之外,实际上还有栈、队列、串等结构,那么这些结构又有哪些特点呢,本文就给大家详细的介绍一下,感兴趣的小伙伴跟着小编一起来看看吧
    2023-07-07
  • java 方法泛型入参T和String的重载关系详解

    java 方法泛型入参T和String的重载关系详解

    这篇文章主要介绍了java 方法泛型入参T和String的重载关系详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Spring Cloud基于zuul实现网关过程解析

    Spring Cloud基于zuul实现网关过程解析

    这篇文章主要介绍了Spring Cloud基于zuul实现网关过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Java图形界面之JFrame,JLabel,JButton详解

    Java图形界面之JFrame,JLabel,JButton详解

    这篇文章主要介绍了Java图形界面之JFrame、JLabel、JButton详解,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • Java中泛型的用法总结

    Java中泛型的用法总结

    这篇文章主要介绍了Java中泛型的用法,实例总结了java中泛型的常见使用技巧,需要的朋友可以参考下
    2015-06-06

最新评论