练手系列(1) 找出数组中重复次数最多的元素并打印

开博第一篇,呵呵,一直在做维护项目,好长时间不写代码了,手都感觉生疏了。以后尽量每天至少一篇练练手。

找出数组中重复次数最多的元素并打印

1 package test; java.util.Arrays; 4 import java.util.HashMap; 5 import java.util.Iterator; 6 import java.util.Map; 7 import java.util.Map.Entry; 8 import java.util.Random; 9 import java.util.Set; Test {[] arr = new int[1000]; main(String[] args) {createArray();test01(arr); 20 test02(arr); 21 }* 首先准备一个长度为1000的数组作为测试对象 25 * 通过random类来随机插入整数 createArray() { 28Random r = new Random(); 29for (int i = 0; i < 1000; i++) { 30arr[i] = r.nextInt(100); 31 } 32 }* 第一个方法是依次读取数组中每个值,虚拟主机,把读取到的值和它出现的次数分别作为key和value放到一个Map中去,服务器空间, 36 * 读取完成之后,再找到此Map中value值最大的那个key就可以了。 arrtest01(int[] arr) { 40Map<Integer, Integer> map = new HashMap<Integer, Integer>(); 41for (int i = 0; i < arr.length; i++) { 42if (map.containsKey(arr[i])) {map.put(arr[i], map.get(arr[i]) + 1); 45} else {map.put(arr[i], 1); 48 } 49 }Set<Entry<Integer, Integer>> set = map.entrySet(); 52Iterator<Entry<Integer, Integer>> it = set.iterator();key = 0; (it.hasNext()) { 56Entry<Integer, Integer> entry = it.next(); 57if (entry.getValue() > nums) { 58nums = entry.getValue(); 59key = entry.getKey(); 60 } 61 } 62System.out.println(“出现次数最多的数是:” + key + “; 出现了” + nums + “次!”); 63 }* 此方法为先对数组进行排序,香港服务器,然后遍历数组求结果。 67 * 不推荐此方法,为了考虑到数组的各种可能状况,写了一个小时,唉,估计还有bug。 arrtest02(int[] arr) {Arrays.sort(arr);nums = 0;key = 0;// 定义出现次数最多的数i = 1; 78int tmpNums = 1; 79int tmpKey = arr[0]; 80while (i < arr.length) { 81if (arr[i] == tmpKey) { 82tmpNums++; 83} else { 84if (tmpNums > nums) { 85key = tmpKey; 86nums = tmpNums; 87tmpKey = arr[i]; 88tmpNums = 1; 89} else { 90if (i < arr.length – 1) { 91tmpNums = 1; 92tmpKey = arr[i+1]; 93 } 94 } 95 } 96i++; 97 }(tmpNums > nums) {100key = tmpKey;101nums = tmpNums;102 }(nums == 0) {105nums = tmpNums;106key = tmpKey;107 }108System.out.println(“出现次数最多的数是:” + key + “; 出现了” + nums + “次!”);109 }110 }然后继续努力,把让自己跌倒的石头搬掉或绕过去,不就解决问题了吗?

练手系列(1) 找出数组中重复次数最多的元素并打印

相关文章:

你感兴趣的文章:

标签云: