假设我有一个长度为10000
的数组,其中包含1-9
的值,我需要在java中编写一个程序,该程序将查找一个数字在一个有效的重复次数方式。
我想过定义9
个变量并使用if else如果这个数字正在重复,那么梯形i会增加那个值,但这不是一个有效的方法,请建议我采用其他方法。
答案 0 :(得分:4)
使用计数器向量。假设我们定义了一个包含10个位置的向量计数[]。在count [1]中,我们存储'1'出现在数组中的次数,在count [2]中我们计算2的数据,依此类推。 。
答案 1 :(得分:3)
Map<Integer,Integer> cnts = new HashMap<Integer, Integer>();
int array[] = new int[1000];
for(int i=0;i<array.length;i++){
for (Map.Entry<Integer, Integer> entry : cnts.entrySet()) {
if(array[i]==entry.getKey()){
int val = entry.getValue()+1; // increment value by 1
entry.setValue(val);
}
}
}
创建地图Key
是数字,Value
是出现次数。
答案 2 :(得分:1)
创建一个HashMap(Key =&gt; Number Value =&gt; count次) 每次找到号码时都要增加价值。
这里有一些示例代码:
if(map.containsKey(currentNumber)){
int count = map.get(random);
count++;
map.put(random, count);
}
答案 3 :(得分:0)
使用任意周期numbers[8]
创建新数组numbers[array[n - 1]]
和函数计数数量,其中array
是您的数组,n
是计数器。
答案 4 :(得分:0)
这是完整的运行示例...希望它可以帮助您
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class CountDuplicateItems {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("b");
list.add("c");
list.add("a");
list.add("a");
list.add("a");
System.out.println("\nExample 1 - Count 'a' with frequency");
System.out.println("a : " + Collections.frequency(list, "a"));
System.out.println("\nExample 2 - Count all with frequency");
Set<String> uniqueSet = new HashSet<String>(list);
for (String temp : uniqueSet) {
System.out.println(temp + ": " + Collections.frequency(list, temp));
}
System.out.println("\nExample 3 - Count all with Map");
Map<String, Integer> map = new HashMap<String, Integer>();
for (String temp : list) {
Integer count = map.get(temp);
map.put(temp, (count == null) ? 1 : count + 1);
}
printMap(map);
System.out.println("\nSorted Map");
Map<String, Integer> treeMap = new TreeMap<String, Integer>(map);
printMap(treeMap);
}
public static void printMap(Map<String, Integer> map) {
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println("Key : " + entry.getKey() + " Value : " + entry.getValue());
}
}
}
<强>输出强>
示例1 - 计算&#39; a&#39;有频率 a:4
示例2 - 全部按频率计数 d:1 b:2 c:2 a:4
示例3 - 使用Map计算全部 关键:d值:1 键:b值:2 键:c值:2 关键:a值:4
排序地图 关键:a值:4 键:b值:2 键:c值:2 关键:d值:1