@Override public void addPreference(Long u, Long i, Double d) { if (model != null) { throw new IllegalArgumentException("DataModel already generated. It is not possible to add more information."); } Collection<Preference> prefs = null; if (!data.containsKey(u)) { prefs = new ArrayList<Preference>(); data.put(u, prefs); } else { prefs = data.get(u); } prefs.add(new GenericPreference(u, i, d.floatValue())); }
@Override public void addTimestamp(Long u, Long i, Long t) { if (model != null) { throw new IllegalArgumentException("DataModel already generated. It is not possible to add more information."); } FastByIDMap<Long> prefs = null; if (!timestampData.containsKey(u)) { prefs = new FastByIDMap<Long>(); timestampData.put(u, prefs); } else { prefs = timestampData.get(u); } prefs.put(i, t); }
@Test public void testContains() { FastByIDMap<String> map = buildTestFastMap(); assertTrue(map.containsKey(500000L)); assertTrue(map.containsKey(47L)); assertTrue(map.containsKey(2L)); assertTrue(map.containsValue("alpha")); assertTrue(map.containsValue("bang")); assertTrue(map.containsValue("beta")); assertFalse(map.containsKey(999)); assertFalse(map.containsValue("something")); }
@Test public void testPreferenceShufflerWithSyntheticData() throws Exception { setUpSyntheticData(); ParallelSGDFactorizer.PreferenceShuffler shuffler = new PreferenceShuffler(dataModel); shuffler.shuffle(); shuffler.stage(); FastByIDMap<FastByIDMap<Boolean>> checked = new FastByIDMap<FastByIDMap<Boolean>>(); for (int i = 0; i < shuffler.size(); i++) { Preference pref=shuffler.get(i); float value = dataModel.getPreferenceValue(pref.getUserID(), pref.getItemID()); assertEquals(pref.getValue(), value, 0.0); if (!checked.containsKey(pref.getUserID())) { checked.put(pref.getUserID(), new FastByIDMap<Boolean>()); } assertNull(checked.get(pref.getUserID()).get(pref.getItemID())); checked.get(pref.getUserID()).put(pref.getItemID(), true); } LongPrimitiveIterator userIDs = dataModel.getUserIDs(); int index=0; while (userIDs.hasNext()) { long userID = userIDs.nextLong(); PreferenceArray preferencesFromUser = dataModel.getPreferencesFromUser(userID); for (Preference preference : preferencesFromUser) { assertTrue(checked.get(preference.getUserID()).get(preference.getItemID())); index++; } } assertEquals(index, shuffler.size()); }