@Override public RatingMatrixEntry next() { final int index = iter.nextInt(); return data.getEntry(index); }
@Override public KeyIndex itemIndex() { requireValid(); return data.getItemIndex(); }
assertThat(data.size(), equalTo(10000)); PackedRatingData.IndirectEntry ip = data.getEntry(-1); for (int i = 0; i < 10000; i++) { ip.setIndex(i); assertThat(ip, samePreferenceAs(prefs[i])); assertThat(ip.getUserIndex(), equalTo(data.getUserIndex().getIndex(prefs[i].getUserId()))); assertThat(ip.getItemIndex(), equalTo(data.getItemIndex().getIndex(prefs[i].getItemId())));
@Test public void testAddPreference() { int idx = bld.add(10, 39, 3.5); assertThat(idx, equalTo(0)); assertThat(bld.size(), equalTo(1)); PackedRatingData data = bld.build(); assertThat(data.size(), equalTo(1)); RatingMatrixEntry p2 = data.getEntry(0); assertThat(p2.getIndex(), equalTo(0)); assertThat(p2.getUserIndex(), equalTo(0)); assertThat(p2.getItemIndex(), equalTo(0)); assertThat(p2.getUserId(), equalTo(10L)); assertThat(p2.getItemId(), equalTo(39L)); assertThat(p2.getValue(), equalTo(3.5)); }
/** * Query whether this getEntry is valid. Valid preferences point to * * @return {@code true} if this index is valid. */ public boolean isValid() { return index >= 0 && index < size(); }
@Override public KeyIndex userIndex() { requireValid(); return data.getUserIndex(); }
private PackedRatingData internalBuild() { return new PackedRatingData(users, items, values, nprefs, userIndex.frozenCopy(), itemIndex.frozenCopy()); }
/** * Construct a preference collection view of the entire packed data set. * * @param data A packed rating data set. */ PackedRatingCollection(PackedRatingData data) { this(data, CollectionUtils.interval(0, data.size())); }
@Override @Nonnull public List<Collection<RatingMatrixEntry>> get() { int nusers = data.getUserIndex().size(); ArrayList<IntArrayList> userLists = new ArrayList<>(nusers); for (int i = 0; i < nusers; i++) { userLists.add(new IntArrayList()); } for (RatingMatrixEntry pref : getRatings()) { final int uidx = pref.getUserIndex(); final int idx = pref.getIndex(); userLists.get(uidx).add(idx); } ArrayList<Collection<RatingMatrixEntry>> users = new ArrayList<>(nusers); for (IntArrayList list: userLists) { list.trim(); users.add(new PackedRatingCollection(data, list)); } return users; } }
private PackedRatingData internalBuild() { return new PackedRatingData(users, items, values, nprefs, userIndex.frozenCopy(), itemIndex.frozenCopy()); }
@Override public RatingMatrixEntry previous() { final int index = iter.previousInt(); return data.getEntry(index); }
@Test public void testInitialState() { assertThat(bld.size(), equalTo(0)); PackedRatingData data = bld.build(); assertThat(data, notNullValue()); assertThat(data.size(), equalTo(0)); }
@Override public KeyIndex userIndex() { requireValid(); return data.getUserIndex(); }
@Override public KeyIndex itemIndex() { requireValid(); return data.getItemIndex(); }
@Override public RatingMatrixEntry get(int index) { Preconditions.checkElementIndex(index, indices.size()); return data.getEntry(index); }