Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.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_Facebook_List_Collections_Maps - Fatal编程技术网

Java集合帮助(实践它!)

Java集合帮助(实践它!),java,facebook,list,collections,maps,Java,Facebook,List,Collections,Maps,我需要以下问题的帮助: 以下是我的代码: public static int rarest(Map<String, Integer> m) { if ( m.isEmpty() ) { throw new NullPointerException(); } int min = Integer.MAX_VALUE; int store = Integer.MAX_VALUE; Map<Integer, Integer> m1 = new TreeMap<In

我需要以下问题的帮助:

以下是我的代码:

public static int rarest(Map<String, Integer> m) {
if ( m.isEmpty() ) {
    throw new NullPointerException();
}

int min = Integer.MAX_VALUE;
int store = Integer.MAX_VALUE;
Map<Integer, Integer> m1 = new TreeMap<Integer, Integer>();
List<Integer> l = new ArrayList<Integer>();

for (Integer a: m.values()) {
    l.add(a);
}

for(int i=0; i<l.size(); i++) {
    int temp = 1;
    for(int j=i+1; j<l.size(); j++) {
        if ( l.get(i) == l.get(j) ) {
            temp++;
        }
    }

    if ( !m1.containsKey(l.get(i)) ) {
        m1.put( l.get(i), temp );
    }
}

for(Integer a: m1.keySet()) {
    int val = m1.get(a);
    if (val == min) {
        if ( a<store ) {
            store = a;
        }
    } else if ( val < min ) {
        min = val;
        store = a;
    }
}

return store;
我得到了
1000
的返回值,返回值应该是
3
。为什么会这样?

你应该改变

l.get(i) == l.get(j)

  • Integer
    是一种引用类型
  • equals()
    比较值
  • =
    比较指针

请不要抛出NullPointerException…只需调试代码。我建议您调试代码,并在代码中添加断点以验证变量中的值。特别是最后一个for循环。
l.get(i) == l.get(j)
l.get(i).equals(l.get(j)