Developing a Ratings Query Application

1 Introduction

Most major websites collect feedback from their customers in order to improve the quality

of their services. The most common form of user feedback is ratings. For example,

[url removed, login to view] collects users’ ratings of books (see Figure 1), [url removed, login to view] collects movie

ratings and [url removed, login to view] gathers users’ rating of hotels.

Figure 1: Some books’ ratings on [url removed, login to view]

A rating consists mainly of three important pieces of information:

1. The user ID: this is the ID of the user who gave the rating.

2. The item ID: this is the ID of the item being rated. For example, the item can be

a book, a movie or a hotel.

3. The rating value: this is a numerical value that is usually an integer ranging from

1 to 5 (or 1 to 10), where 1 is the lowest rating (user not satisfied) and 5 (or 10) is

the highest rating (user very satisfied).

Your goal in this project is to write a program that reads a list of ratings from a text

file, stores them e!ciently in memory (you should choose the appropriate data structure

for this) and answers a number of queries as e!ciently as possible. Examples of queries

are: What is the rating given by user i to item j? What is the average rating of item j?

What is (are) the highest rated item(s)?

2 Requirements

In this phase, you are required to implement the following classes:

public class Rating {

private int userId;

private int itemId;

private int value; // The value of the rating

// Constructor

public Rating(int userId, int itemId, int value);

// Getters... (No setters. This class is immutable)


public class RatingManager {

// Constructor

public RatingManager();

// Read ratings from a file and create a RatingManager object that stores these


public static RatingManager read(String fileName);

// Add a rating

public void addRating(Rating rating);

// Return all ratings given by user i. Search should be efficient.

public LinkedList<Rating> getUserRatings(int i);

// Return all ratings given to item j. Search should be efficient.

public LinkedList<Rating> getItemRatings(int j);

// Return the average rating of item j. If i has no ratings, -1 is returned

public double getAverageItemRating(int j);

// Return the average rating given by user i. If i has no ratings, -1 is


public double getAverageUserRating(int i);

// Return the list of all items having the highest average rating (for example

if the highest average rating is 4.9, the method should return all items

with average rating 4.9)

public LinkedList<Integer> getHighestRatedItems();


Let n denote the number of users, m the number of items and k the number of ratings.

Usually k is much smaller than nm, because a user does not usually rate all items. Your

memory requirement must be O(k) and not O(nm).

3 Deliverable and rules

You must deliver:

1. A report written using the provided template.

Habilidades: Java, Programming

Veja mais: proof read this, fresh graduate read this now online administrative assistant general santos city dadiangas for sale, to prove you have actually read this project please start your bid text with i have read your project carefully, please read this carefully, please read this carefully :, i-actually-read-this, hello please read this post carefully and thouroughly, security descriptor string read, iphone application send pictures developing, developing symbian application read inbox messages, create php program open file read datacreate array phone numberconstructed comma, iphone application query mysql, application read sms, cost developing kickapps application, developing social networking application php

Acerca do Empregador:
( 0 comentários ) Saudi Arabia

ID do Projeto: #12129237

8 freelancers estão ofertando em média $21 para esse trabalho


Hello, This is in response to your job notification for the position of Java Professional for your project. I have been working as a Java developer for the last 4 years with a software firm and mentioned Mais

$30 USD in 2 dias
(13 Comentários)

Hi, I'm an experienced java developer and I can do this task in 2 days. I can produce quality code with comments as required. Thanks & Regards, Indika

$25 USD in 2 dias
(2 Comentários)

Hey there! Welcome to Akkas Technologies! Hope you are doing well. This is Awais, I have worked on similar projects to what you are looking for, and I am confident I can exceed your expectations. Why do I say that? I Mais

$25 USD em 1 dia
(0 Comentários)

We have a team that will definitely provide best solution to you. We do fair code with reasonable price and client satisfaction is our Responsibility. Personally we have 8 + years experience of web, Mobile and desktop Mais

$10 USD em 1 dia
(0 Comentários)

Hi, my name is Aleksej Did I understand correctly - you need only a implementation of the classes from attachment, not whole program yet? If everything is correct, I can do your task

$25 USD in 2 dias
(0 Comentários)
$15 USD em 1 dia
(0 Comentários)

Hi, I had hands on experience in Java, SQL server. Knowledge on Data structures and algorithms. I had an experience in java more than 3 years. So, I will complete to fulfill your requirement as soon as possible. Mais

$20 USD in 2 dias
(0 Comentários)

Hi, I've already finished the project: - In Rating class: constructor and getters for itemId, userId and value - In RatingManager class: constructor, read, addRating, getUserRatings (time complexity of O(k)), getItem Mais

$20 USD in 0 dias
(0 Comentários)

I believe that I am the best candidate for this position because of my extensive experience as a full stack developer. I was part of the initial development team for VISA payment system migration to the chip based aut Mais

$25 USD in 3 dias
(0 Comentários)