您的位置:首页 > 其它

统计int数组中重复数字的个数

2016-09-06 22:30 239 查看
本小白刚接触java,趁着复习笔试,总结了下如何统计数组中重复数字的个数,大家一起学习~

方法一,用HashMap。这种方法简单明了,易于操作和理解。

private static void countSameNumber1(int[] number){
HashMap<Integer,Integer> hm = new HashMap<Integer,Integer>();
for(int i =0;i < number.length;i++){
if(!hm.containsKey(number[i])){
hm.put(number[i],1);
}
else{
hm.put(number[i],(hm.get(number[i]))+1);
}
}
for(Map.Entry<Integer,Integer> entry:hm.entrySet()){
System.out.println(entry.getKey() + "出现了" + entry.getValue() + "次");
}
}
方法二,用一个数组去存储重复的个数,数组下标即为需要统计的数字。

private static void countSameNumber2(int[] number){
Arrays.sort(number);
//若数组内为1 2 3 4 1 2 ,则创建一个大小为5的数组,下标为0-4.
int[] numbers = new int[number[number.length -1] + 1];
for(int i =0;i< numbers.length;i++){
numbers[i] = 0;
}
//i即为原数组中数字,numbers[i]存放重复的次数
for(int i =0; i<number.length;i++){
int temp = number[i];
numbers[temp]++;
}
//打印
for(int i =0;i < numbers.length;i++){
if(numbers[i] == 0){
continue;
}
System.out.println(i + "出现了" + numbers[i] + "次");
}
}

添加方法三,用Collections.frequency()实现

private static void countSameNumber3(int[] number){
ArrayList<Integer> al = new ArrayList<Integer>();
ArrayList<Integer> all = new ArrayList<Integer>();
for(int i =0;i<number.length;i++){
if(!al.contains(number[i])){
al.add(number[i]);
}
}
for(int i=0;i<number.length;i++){
all.add(number[i]);
}
for(int i=0;i<al.size();i++){
int result = Collections.frequency(all,al.get(i));
System.out.println(al.get(i) + "出现了" + result + "次");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐