Skip to content

Commit 7ed65de

Browse files
committed
Week3. Assignment 1: Efficiency
1 parent 6d4f1dd commit 7ed65de

File tree

3 files changed

+52
-4
lines changed

3 files changed

+52
-4
lines changed

Week3/src/EfficientRater.java

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import java.util.ArrayList;
2+
import java.util.HashMap;
3+
4+
/**
5+
* The class EfficientRater keeps track of one rater and all their ratings.
6+
*
7+
* @author Stanislav Rakitov
8+
* @version 1.0
9+
*/
10+
public class EfficientRater implements Rater {
11+
private final String myID;
12+
private final HashMap<String, Rating> myRatings;
13+
14+
public EfficientRater(String id) {
15+
myID = id;
16+
myRatings = new HashMap<>();
17+
}
18+
19+
public void addRating(String movieID, Rating rating) {
20+
myRatings.put(movieID, rating);
21+
}
22+
23+
public boolean hasRating(String movieID) {
24+
return myRatings.containsKey(movieID);
25+
}
26+
27+
public String getID() {
28+
return myID;
29+
}
30+
31+
public double getRating(String movieID) {
32+
Rating rating = myRatings.get(movieID);
33+
if (rating != null) {
34+
return rating.getValue();
35+
} else {
36+
return -1;
37+
}
38+
}
39+
40+
public int numRatings() {
41+
return myRatings.size();
42+
}
43+
44+
public ArrayList<String> getItemsRated() {
45+
return new ArrayList<>(myRatings.keySet());
46+
}
47+
}

Week3/src/FirstRatings.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -366,14 +366,14 @@ private ArrayList<Rater> loadRaters(String fileName) {
366366
double rating = Double.parseDouble(record.get(2));
367367
String time = record.get(3);
368368
if (!idsList.contains(rater_id)) {
369-
Rater rater = new PlainRater(rater_id);
369+
Rater rater = new EfficientRater(rater_id);
370370
ratersList.add(rater);
371-
rater.addRating(movie_id, rating);
371+
rater.addRating(movie_id, new Rating(movie_id, rating));
372372
idsList.add(rater_id);
373373
} else {
374374
for (Rater r : ratersList) {
375375
if (r.getID().equals(rater_id)) {
376-
r.addRating(movie_id, rating);
376+
r.addRating(movie_id, new Rating(movie_id, rating));
377377
}
378378
}
379379
}

Week3/src/Rater.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import java.util.ArrayList;
22

33
public interface Rater {
4-
void addRating(String item, double rating);
4+
// void addRating(String item, double rating);
5+
void addRating(String movieID, Rating rating);
56

67
boolean hasRating(String item);
78

0 commit comments

Comments
 (0)