Java如何找出数组中重复的数字

要找出Java数组中的重复数字,可能有以下几种方法:

方法一:暴力方法

这个方法虽然简单易懂,但其时间复杂度也比较高,不过对于小型数组来说还是可以接受的。

简单来说就是遍历整个数组,对于每一个数字,都依次遍历后面的数字,如果发现该数字已经出现过,那么就把它输出出来即可。

这个方法的Java代码示例如下:

public void findDuplicate(int[] arr) {
  for (int i = 0; i < arr.length - 1; i++) {
    for (int j = i + 1; j < arr.length; j++) {
      if (arr[i] == arr[j]) {
        System.out.println("重复数字为:" + arr[i]);
      }
    }
  }
}

方法二:使用HashMap

这个方法的思路是利用一个HashMap来存储数组中出现过的数字及其出现的次数,然后再遍历HashMap,输出其中出现次数大于1的数字即可。

这个方法的Java代码示例如下:

public void findDuplicate(int[] arr) {
  Map<Integer, Integer> map = new HashMap<>();

  // 把数组中的数字及其出现的次数放到HashMap中
  for (int i = 0; i < arr.length; i++) {
    if (map.containsKey(arr[i])) {
      map.put(arr[i], map.get(arr[i]) + 1);
    } else {
      map.put(arr[i], 1);
    }
  }

  // 遍历HashMap,输出出现次数大于1的数字
  for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
    if (entry.getValue() > 1) {
      System.out.println("重复数字为:" + entry.getKey());
    }
  }
}

示例:

假设有数组arr = {1, 2, 3, 4, 5, 2, 3, 8, 9, 9},我们可以使用以上两种方法找出其中的重复数字。我们可以调用findDuplicate()方法和传入arr参数,即可找出其中的重复数字为2和3。

另外,在实际项目中,我们更推荐使用HashMap的方法,因为其时间复杂度较低,而且可以方便的统计次数并输出出现次数大于1的数字。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java如何找出数组中重复的数字 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 关于Java日期工具类的编写

    下面是关于 Java 日期工具类编写的攻略。 为什么需要Java日期工具类? 在Java应用中需要频繁地操作日期和时间。Java中的日期与时间有很多操作细节,例如时区、夏令时、闰秒等,为了避免在每个地方手动操作,我们需要一个工具类去统一处理这些操作。 基于这些考虑,我们可以使用Java日期工具类封装所有的日期时间操作,以提高代码的可维护性,降低代码耦合度。 …

    Java 2023年5月20日
    00
  • 搭建SSH时的思考和遇到的几个问题的解决方法

    下面是关于搭建SSH时思考和遇到的几个问题的完整攻略。 背景 SSH是Secure Shell的缩写,是一种安全的网络协议,用于远程登录Linux服务器及远程执行Linux命令。搭建SSH服务后,可以在终端使用ssh命令直接登录Linux服务器,无需在物理终端上直接操作。搭建SSH服务对于Linux技术爱好者和系统管理员非常重要。 思考 在搭建SSH服务时需…

    Java 2023年5月20日
    00
  • Apache ActiveMQ任意文件写入漏洞(CVE-2016-3088)复现

    以下是Apache ActiveMQ任意文件写入漏洞(CVE-2016-3088)的完整攻略: 漏洞介绍 Apache ActiveMQ是一款开源的消息队列系统。当使用ActiveMQ的fileserver和http服务时,可以利用该漏洞将任意文件写入至任意路径,从而造成远程代码执行。 漏洞编号:CVE-2016-3088漏洞评级:高危 环境搭建 首先需要搭…

    Java 2023年6月15日
    00
  • Java中Timer的用法详解

    Java中Timer的用法详解 什么是Timer? Timer是Java中的一个定时器工具类,可以用于在指定的时间间隔内重复执行某个任务,或执行单次任务。 Timer的基本用法 创建一个Timer对象 Timer timer = new Timer(); 定义需要重复执行的任务 TimerTask task = new TimerTask() { @Over…

    Java 2023年5月20日
    00
  • 如何避免内存溢出?

    以下是关于如何避免内存溢出的完整使用攻略: 什么是内存溢出? 内存溢出是指程序在申请内存时,没有足够的内存空间可供使用,导致程序无法运行。内存溢出是一种常见的程序错误,如果不及时处理,会导致程序崩溃或者系统崩溃。 如何避免内存溢出? 为了避免内存溢出,需要注意以下几点: 1. 合理分配内存 在程序中,需要合理分配内存空间,避免申请过大的内存空间,从而导致内存…

    Java 2023年5月12日
    00
  • SpringBoot实现线程池

    下面是SpringBoot实现线程池的完整攻略: 1. 什么是线程池 线程池是一种多线程处理的实现方式,简单来说就是在程序启动时提前创建好一定数量的线程,在需要处理多任务时就从线程池中调用空闲线程执行,任务执行完成后又返回线程池。这样避免了频繁的创建和销毁线程的开销,提高了程序执行效率。 2. SpringBoot实现线程池 Spring Boot中提供了T…

    Java 2023年5月19日
    00
  • springboot 自定义权限标签(tld),在freemarker引用操作

    下面是完整攻略: 1. 首先创建Spring Boot项目 可以使用Spring Initializr创建一个新的Spring Boot项目,选择Web和Freemarker作为依赖项。 2. 添加依赖项 在pom.xml文件中添加以下依赖项: <dependency> <groupId>org.springframework.boo…

    Java 2023年6月15日
    00
  • spring boot 注入 property的三种方式(推荐)

    在Spring Boot应用程序中,我们可以使用application.properties或application.yml文件来配置应用程序的属性。这些属性可以通过三种方式注入到Spring Bean中。下面是详解Spring Boot注入property的三种方式的完整攻略: 使用@Value注解 @Value注解是Spring框架提供的一种注入属性的方…

    Java 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部