Java 使用HashMap和ArrayList查找数据集的模式。Can';我想不出来

Java 使用HashMap和ArrayList查找数据集的模式。Can';我想不出来,java,debugging,arraylist,hashmap,mode,Java,Debugging,Arraylist,Hashmap,Mode,因此,我尝试创建一组方法,查找给定给它的一组int的模式(以数组的形式),并返回一个包含所有模式的数组,包括可能没有模式的数组。我坐下来写了一会儿这些代码片段,经过大量调试后,我无法让它工作。代码的风格不是很好,但我只是想知道是否有人能找出哪里出了问题。顺便说一下,main()方法就是用来测试这个方法的。代码如下: public static int[] getMode(int[] numset) { Map<Integer, Integer> vals = new Hash

因此,我尝试创建一组方法,查找给定给它的一组int的模式(以数组的形式),并返回一个包含所有模式的数组,包括可能没有模式的数组。我坐下来写了一会儿这些代码片段,经过大量调试后,我无法让它工作。代码的风格不是很好,但我只是想知道是否有人能找出哪里出了问题。顺便说一下,main()方法就是用来测试这个方法的。代码如下:

public static int[] getMode(int[] numset) {
    Map<Integer, Integer> vals = new HashMap<Integer, Integer>();
    ArrayList<Integer> modes = new ArrayList<Integer>();
    int highCount = 0;

    for(int num : numset) {
        if(vals.containsKey(num))
            vals.put(num, vals.get(num) + 1);
        else
            vals.put(num, 0);       
    }

    if(allValuesEqual(vals)) return new int[0];

    for(int key : vals.keySet()) {
        if(vals.get(key) > highCount) {
            highCount = vals.get(key);
        }
    }

    for(int key : vals.keySet()) {
        if(vals.get(key) == highCount)
            modes.add(key);
    }

    int[] mode = new int[modes.size()];
    int count = 0;
    for(int num : modes) {
        mode[count] = num;
        count++;
    }


    return mode;
}

private static boolean allValuesEqual(Map<Integer,Integer> vmap) {
    ArrayList<Integer> a = new ArrayList<Integer>();
    for(int key : vmap.keySet()) {
        a.add(vmap.get(key));
    }

    for(int i = 0, n = a.size(); i < n; i++) {
        if(a.get(i) != a.get(0) && i != 0)
            return false;
    }
    return true;
}

public static void main(String[] args) {
    int[] array = {6,10,10};
    System.out.println(getMode(array));
}
公共静态int[]getMode(int[]numset){
Map vals=新的HashMap();
ArrayList模式=新建ArrayList();
int高计数=0;
for(int num:numset){
if(容器的价值(数量))
vals.put(num,vals.get(num)+1);
其他的
VAL.put(数值,0);
}
if(allValuesEqual(vals))返回新的int[0];
for(int键:vals.keySet()){
if(VAL.get(键)>高计数){
高计数=VAL.get(键);
}
}
for(int键:vals.keySet()){
if(VAL.get(键)=高计数)
模式。添加(键);
}
int[]mode=新的int[modes.size()];
整数计数=0;
for(int num:modes){
模式[计数]=num;
计数++;
}
返回模式;
}
私有静态布尔allValuesEqual(映射vmap){
ArrayList a=新的ArrayList();
for(int键:vmap.keySet()){
a、 添加(vmap.get(key));
}
对于(int i=0,n=a.size();i
结果:
[I@677327b6

我完全被难住了。有什么想法吗?

您可以使用
数组。toString()
轻松打印出数组的内容:

public static void main(String[] args) {
    int[] array = {6,10,10};
    System.out.println(Arrays.toString(getMode(array)));
}

您得到的上一个结果
[I@677327b6
是一个参考值。

我所说的“结果”是指
[I@677327b6
已打印到控制台。另外,仅需添加说明,没有编译器错误或类似错误。只是出来的值非常混乱。这是数组引用,请参阅此感谢@tim,我想我错过了。再次感谢