题目:用面向对象的方法求出数组中重复 value 的个数 :  1  出现:1 次3 出现:2 次8 出现:3 次2 出现:4

  提供数组 :  int[] arr = {1,4,1,4,2,5,4,5,8,7,8,77,88,5,4,9,6,2,4,1,5} ;

答案:

     // 面试题,给定一个数组,按照顺序将 元素的重复次数打印出来
int array [] = {1,4,1,4,2,5,4,5,8,7,8,77,88,5,4,9,6,2,4,1,5} ;
Arrays.sort(array); // 排序
int count = 0 ; // 初始化计数器
int temp = array[0] ; // 初始化一个变量 此时为1(数组第一个元素)
//定义一个map,key为元素,value为次数。利用map 同样的key 会覆盖掉前面的value的特性
Map<Integer,Integer> map = new HashMap<Integer, Integer>() ;
for (int i=0 ; i<array.length ; ++i){
//排完序,相同的元素会在一块,遇到不相同的 进行新的计数
if (temp != array[i]){
temp = array[i] ;
count = 1 ;
}else { //然后遇到重复的 计数器+1,
count ++ ;
}
map.put(array[i],count) ;
}
// 将 map遍历出来
for (Map.Entry<Integer,Integer> entry : map.entrySet()){
System.out.println(entry.getKey()+"出现了:"+entry.getValue());
}

结果:

1出现了:3
2出现了:2
4出现了:5
5出现了:4
6出现了:1
7出现了:1
8出现了:2
88出现了:1
9出现了:1
77出现了:1

解题思路:先进行排序,这样重复的元素会排到一块。然后 将索引为0的元素赋值给 temp,然后循环遍历,如果temp == 遍历出来的值,计数器+1,如果 != 的话,就是新的不与上面的重复的元素,开始新的计数,然后将本次循环的元素 作为key,计数作为值,存到map中(map有个特性,同样的key会覆盖掉原来的value,这样就会一直覆盖到最新的重复数,再进行下一个新key的计数)。 最后将map 遍历打印出来,结束。

java 关于数组 计数的面试题的更多相关文章

  1. 【Java面试题】18 java中数组有没有length()方法?string没有lenght()方法?下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d";

    数组没有length()这个方法,有length的属性.String有有length()这个方法. int a[]; a.length;//返回a的长度 String s; s.length();// ...

  2. Java并发编程75道面试题及答案

    1.在java中守护线程和本地线程区别? java中的线程分为两种:守护线程(Daemon)和用户线程(User). 任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon( ...

  3. [Java 基础]数组

    数组初始化 定义数组语法格式 定义数组有两种方式,如下两种格式是等价的: int[] a1; int a1[];  注:在C/C++中,不支持第一种格式.但是,推荐使用这种方式,因为这样似乎更合理,声 ...

  4. Java的Exception和Error面试题10问10答

    在Java核心知识的面试中,你总能碰到关于 处理Exception和Error的面试题.Exception处理是Java应用开发中一个非常重要的方面,也是编写强健而稳定的Java程序的关键,这自然使它 ...

  5. Java线程相关的热门面试题

    ---恢复内容开始--- 下面是Java线程相关的热门面试题,你可以用它来好好准备面试. 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序 ...

  6. Java排序之计数排序

    Java排序之计数排序 计数排序思路 计数排序适用于有明确范围的数组,比如给定一个数组,且知道所有值得范围是[m,n].这个时候可以使用一个n-m+1长度的数组,待排序的数组就可以散在这个数组上,数组 ...

  7. Java:多线程计数

    Java:多线程计数 本笔记是根据bilibili上 尚硅谷 的课程 Java大厂面试题第二季 而做的笔记 1. CountDownLatch 概念 让一些线程阻塞直到另一些线程完成一系列操作才被唤醒 ...

  8. java中数组的相关知识

      1. 2.数组的命名方法 1)int[]ages=new int[5]; 2) int[]ages; ages=new int[5]; 3)int[]ags={1,2,3,4,5}; 4)int[ ...

  9. Java基础——数组应用之StringBuilder类和StringBuffer类

    接上文:Java基础——数组应用之字符串String类 一.StringBuffer类 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和 ...

随机推荐

  1. spring集成Redis(单机、集群)

    一.单机redis配置 1. 配置redis连接池 <bean id="jedisPoolConfig" class="redis.clients.jedis.Je ...

  2. 08-Location总结图解

    URI解析  首先要判断有没有精准匹配,能不能精准匹配.计算机里面没有什么这种差不多这种东西.跟人聊天才说差不多,最近过得怎么样啊,还行吧,差不多吧,这个不多是多还是不多啊. 预定义库->Gen ...

  3. python小程序:备份文件

    设计程序,有以下步骤: 需要备份的文件和目录由一个列表指定. 备份应该保存在主备份目录中. 文件备份成一个zip文件. zip存档的名称是当前的日期和时间. 解决方案: 版本一: #!/usr/bin ...

  4. Redis02 Redis客户端之Java、连接远程Redis服务器失败

    1 查看支持Java的redis客户端 本博文采用 Jedis 作为redis客户端,采用 commons-pool2 作为连接redis服务器的连接池 2 下载相关依赖与实战 2.1 到 Repos ...

  5. Python读取CSV文件,报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xa7 in position 727: illegal multibyte sequence

    Python读取CSV文件,报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xa7 in position 727: illegal mul ...

  6. html页面的局部刷新

    有时候我们在做一个动态/静态网页,网页中的某部分需要从服务器获取值但是不能把整个页面都提交到服务器,也就是要对页面做局部刷新,也就是对整个网页无刷新更新值.在这种情况下就需要用JS和XMLHttpRe ...

  7. Django----配置数据库读写分离

    Django配置数据库读写分离 https://blog.csdn.net/Ayhan_huang/article/details/78784486 https://blog.csdn.net/ayh ...

  8. Entity Framework 6.0 Tutorials(5):Command Interception

    Interception: Here, you will learn how to intercept EF when it executes database commands. EF 6 prov ...

  9. [GO]给导入包起别名

    package main import io "fmt" //引用fmt这个包时,名字重命名为io import _ "os" //引用os这个包,但是不调用, ...

  10. HTTP Debugger Pro安装教程

    相关链接:HTTP Debugger Pro使用教程 安装步骤:   1.解压压缩包   2.双击运行安装文件   3.根据向导提示点击Next   4.选择接受协议,点击Next   5.选择高级模 ...