2012-05-24 74 views
0

我需要做的是計算兩個客戶的評分之間的點產品距離。客戶的評分被記錄在散列圖中。用Java計算點產品距離

private HashMap<String,int[]> ratingmap; 

在HashMap中的關鍵是客戶名稱,以及與此相關的是客戶的評級(他的書評級)

我將如何做到這一點?

/** 
* calculate dot product distance between the ratings of two customers 
* @param name1 String name of customer 
* @param name2 String name of customer 
* @return int distance or ILLEGAL_INPUT if name1 or name2 are not customers 
*/ 
public int distance(String name1, String name2) 
{ 
    return 0; //replace with code 
} 

這裏是詳細的在RatingsAnalysisRatingsAnalysis

//collection of rated book titles 
private BookList books; 
//collection of customers and their ratings 
private RatingsMap ratings; 
//use a list of customer names from the ratings map for looping through the map 
private ArrayList<String> customernames; 
+4

請在此上下文中定義「點積距離」。 –

+0

點產品距離是兩個客戶的評分如何「緊密」相關。就像每個顧客被允許在一本書上進行評分一樣,從我所能看到的是它要求評分有多接近,即差異 – Danial

+0

但是目前尚不清楚在這種情況下會涉及哪些計算。請編輯您的問題以舉例說明您要執行的計算。 –

回答

0

據推測,構件字段

private RatingsMap ratings; 

給出的其他位爲名稱=>評分的Map。您在distance方法任務是這樣的:

  1. 中查找評級name1name2並將它們存儲在本地變量(提示:使用Map接口上定義的get法)
  2. 執行點對您在上面獲得的這兩個評分進行產品分析。你或者知道如何做到這一點,或者需要提供更多關於這個問題中Rating的含義的信息。
  3. 返回結果

作爲一個側面說明,RatingsMap可以而且應該更強類型:

private RatingsMap<String, Rating> ratings; 

編輯:添加骨架代碼要求...

public int distance(String name1, String name2) 
{ 
    Rating r1 = this.ratings.get(name1); 
    Rating r2 = this.ratings.get(name2); 

    if(r1 != null && r2 != null) { 
     return .... 
    } 
} 
+0

是聽起來合乎邏輯,我可以得到一個步行骨架代碼如何執行此,因爲目前我似乎無法弄清楚 – Danial

+0

Thankyou,虐待嘗試這並回到你身邊:) – Danial

+0

評級r1和評級r2的'評級'字體不起作用,我會用「評級」這個詞取代什麼?我很抱歉,我真的沒用這個 – Danial