@Nonnull @Override public ResultMap predictWithDetails(long user, @Nonnull Collection<Long> items) { List<Rating> ratings = dao.query(Rating.class) .withAttribute(CommonAttributes.USER_ID, user) .get(); LongSortedSet wantedItems = LongUtils.packedSet(items); List<Result> results = new ArrayList<>(); for (Rating r: ratings) { long item = r.getItemId(); if (wantedItems.contains(r.getItemId())) { results.add(Results.create(item, r.getValue())); } } return Results.newResultMap(results); } }
/** * Run a battery of tests on a standard set. Used to test a variety of * construction scenarios with less code duplication. * * @param set The set {2, 5, 6}. */ private void testSetSimple(LongSortedSet set) { assertFalse(set.isEmpty()); assertEquals(3, set.size()); assertEquals(2, set.firstLong()); assertEquals(6, set.lastLong()); assertEquals(Long.valueOf(2), set.first()); assertEquals(Long.valueOf(6), set.last()); assertTrue(set.contains(2)); assertTrue(set.contains(5)); assertTrue(set.contains(6)); assertFalse(set.contains(0)); assertFalse(set.contains(42)); assertFalse(set.iterator().hasPrevious()); long[] items = LongIterators.unwrap(set.iterator()); assertEquals(2, items[0]); assertEquals(5, items[1]); assertEquals(6, items[2]); }
@Override public Double put(long key, Double value) { if (msv.containsKey(key)) { return msv.set(key, value); } else if (msv.keyDomain().contains(key)) { msv.set(key, value); return defaultReturnValue(); } else { return defaultReturnValue(); } }
@Nonnull @Override public ResultMap predictWithDetails(long user, @Nonnull Collection<Long> items) { List<Rating> ratings = dao.getEventsForUser(user, Rating.class); if (ratings == null) { return Results.newResultMap(); } LongSortedSet wantedItems = LongUtils.packedSet(items); Long2ObjectMap<Result> results = new Long2ObjectOpenHashMap<>(); for (Rating r: ratings) { long item = r.getItemId(); if (wantedItems.contains(r.getItemId())) { if (r.hasValue()) { results.put(item, Results.create(item, r.getValue())); } else { results.remove(item); } } } return Results.newResultMap(results.values()); } }