Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 查找数组的模式_Java_Mode - Fatal编程技术网

Java 查找数组的模式

Java 查找数组的模式,java,mode,Java,Mode,好吧,我再一次陷入困境,这就是我所拥有的 public static int mode(int[][] arr) { List<Integer> list = new ArrayList<Integer>(); List<Integer> Mode = new ArrayList<Integer>(); for (int i = 0; i < arr.length; i++) { for (int j

好吧,我再一次陷入困境,这就是我所拥有的

public static int mode(int[][] arr) {
    List<Integer> list = new ArrayList<Integer>();
    List<Integer> Mode = new ArrayList<Integer>();
    for (int i = 0; i < arr.length; i++) {
        for (int j = 0; j < arr[i].length; j++) {
            list.add(arr[i][j]); 
        }
    }
    for(int i = 0; i < list.size(); i ++) {
        Mode.add((Mode.indexOf(i)+1));
    }
    System.out.println(Mode);
    return 0;
}
公共静态int模式(int[]arr){
列表=新的ArrayList();
列表模式=新建ArrayList();
对于(int i=0;i

我想做的是,为了找到这个数组的数学模式,我想做的是,对于数组中遇到的每一个数字,将相应的索引增加1,最终得到一个新数组,在相应的索引中有“tally”标记,我不确定}我是否以正确的方式处理这个问题我需要一个动态数组,我假设它可以达到可能遇到的任何数字,这样一个数组就可以增长到我需要的任何大小,如果我的代码完全是胡言乱语,请随意批评:)

你考虑过使用映射而不是列表吗?这样,您就可以消除丑陋的indexOf调用,只需根据元素的值引用元素的每个实例,而不是每次进行线性搜索。然后,您所要做的就是在地图中找到具有最高值的键。

您是否考虑过使用地图而不是列表?这样,您就可以消除丑陋的indexOf调用,只需根据元素的值引用元素的每个实例,而不是每次进行线性搜索。然后,您所要做的就是在映射中找到具有最高值的键。

publicstaticsetgetmode(double[]data){
public static Set<Double> getMode(double[] data) {
            if (data.length == 0) {
                return new TreeSet<>();
            }
            TreeMap<Double, Integer> map = new TreeMap<>(); //Map Keys are array values and Map Values are how many times each key appears in the array
            for (int index = 0; index != data.length; ++index) {
                double value = data[index];
                if (!map.containsKey(value)) {
                    map.put(value, 1); //first time, put one
                }
                else {
                    map.put(value, map.get(value) + 1); //seen it again increment count
                }
            }
            Set<Double> modes = new TreeSet<>(); //result set of modes, min to max sorted
            int maxCount = 1;
            Iterator<Integer> modeApperance = map.values().iterator();
            while (modeApperance.hasNext()) {
                maxCount = Math.max(maxCount, modeApperance.next()); //go through all the value counts
            }
            for (double key : map.keySet()) {
                if (map.get(key) == maxCount) { //if this key's value is max
                    modes.add(key); //get it
                }
            }
            return modes;
        }
如果(data.length==0){ 返回新树集(); } TreeMap map=new TreeMap();//映射键是数组值,映射值是每个键在数组中出现的次数 for(int index=0;index!=data.length;++index){ 双值=数据[索引]; 如果(!map.containsKey(值)){ map.put(value,1);//第一次,放一个 } 否则{ map.put(value,map.get(value)+1);//再次查看增量计数 } } Set modes=new TreeSet();//模式的结果集,从最小到最大排序 int maxCount=1; 迭代器modeappearance=map.values().Iterator(); while(modeappearance.hasNext()){ maxCount=Math.max(maxCount,modeappearance.next());//检查所有的值计数 } for(双键:map.keySet()){ if(map.get(key)==maxCount){//如果此键的值为max modes.add(key);//获取它 } } 返回模式; }
公共静态设置getMode(双[]数据){
如果(data.length==0){
返回新树集();
}
TreeMap map=new TreeMap();//映射键是数组值,映射值是每个键在数组中出现的次数
for(int index=0;index!=data.length;++index){
双值=数据[索引];
如果(!map.containsKey(值)){
map.put(value,1);//第一次,放一个
}
否则{
map.put(value,map.get(value)+1);//再次查看增量计数
}
}
Set modes=new TreeSet();//模式的结果集,从最小到最大排序
int maxCount=1;
迭代器modeappearance=map.values().Iterator();
while(modeappearance.hasNext()){
maxCount=Math.max(maxCount,modeappearance.next());//检查所有的值计数
}
for(双键:map.keySet()){
if(map.get(key)==maxCount){//如果此键的值为max
modes.add(key);//获取它
}
}
返回模式;
}

因此您建议更改列表模式=新建ArrayList();要说HashMap吗?是的,是一个
HashMap
。“key”将是你在数组中遇到的数字,“value”将是这个数字出现频率的计数。对于(int i=0;iget()
HashMap
上的
,并在结果中添加1。如果
HashMap
上的
get()
返回空值,则存储1。因此建议更改列表模式=new ArrayList();要说HashMap?是的,
HashMap
。“键”将是数组中遇到的数字,以及“值”将是该数字显示频率的计数。对于(int i=0;i哈希映射上执行
get()
,并在输出中添加1。如果
get()
HashMap上的
返回null,然后存储1。这看起来像是重复的:我不会说它是重复的。这一个询问的是实现,而不是“什么库有这个函数”。这一个询问的是重复的:我不会说它是重复的。这一个询问的是实现,而不是关于“什么图书馆有这个功能”。