访问地图值

时间:2015-12-04 07:04:19

标签: hashmap

static void getRecommendations(Map<User, HashMap<Item, Double>> map, User to) {
    scores = sortMapByScore(scores, to);
    TreeMap<User, Double> scores1 = (TreeMap<User, Double>) scores.get(to);
    Set<User> user = (Set<User>) scores1.keySet();
    Iterator<User> itr = user.iterator();
    Map<Item, Double> rec = new HashMap<Item, Double>();
    int i = 0;
    while (itr.hasNext() && i < 5) {
        User u = itr.next();
        /* for(Item e:map.get(to).keySet()){ */
        for (Item e1 : map.get(u).keySet()) {
            if (!map.get(to).containsKey(e1)) {
                if (rec.containsKey(e1)) {
                    double sc = rec.get(e1);
                    rec.put(e1, sc + map.get(u).get(e1) * scores.get(to).get(u));
                } else {
                //  System.out.println(scores);
                    rec.put(e1, map.get(u).get(e1) * scores.get(to).get(u));
                }
                // }
            }
        }
        i++;
    }
    TreeMap<Item, Double> res = new TreeMap<Item, Double>(
            new ValueComparator(rec));
    res.putAll(rec);
    int k=0;
    for(Item d:res.keySet()){
        System.out.println(d.getmTitle());
        k++;
        if(k==5){break;}
    }

}

我在这个例子中使用嵌套的HashMap和TreeMap。但是我遇到了以下问题。 在上面的代码

rec.put(e1, map.get(u).get(e1) * scores.get(u).get(to));

我得到一个NullPointerException,即使我使用相同的HashMap的键集来获取值。

0 个答案:

没有答案