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()
比较指针=
l.get(i) == l.get(j)
l.get(i).equals(l.get(j)