2013-05-29 65 views
1

我已經設法制作一個程序,我將從excel文件中讀取數據並將它們存儲在mysql表中。我的程序讀取每個文件的第一行,爲表創建字段並將其餘數據作爲每列中的值存儲。僅僅因爲這是以編程方式發生的,我選擇使用LinkedHashMap讀取所有值。一切正常。但是當我完成並測試我的程序時,我的控制檯中出現錯誤。在我試圖解決它問題的幾天後,我在LinkedHashMap的文檔中讀到「如果映射先前包含密鑰的映射,舊值將被替換」。我的洞計劃立即銷燬。原因是在我的文件中,我有一些列中的值相同。 有人知道是否有辦法解決這個問題,或者我必須從頭開始我的程序?既然我沒有多少時間可以幫助我找到一種方法?有沒有辦法處理LinkedHashMap中相同的值?

預先感謝您!

+1

這不是一個問題,它是如何映射工作,一個鍵=一個數值,它是合同。您應該使用具有自定義類或一對的List。 – Djon

+1

你可以像這樣創建一個映射:'Map >'並將具有相同鍵的對象存儲在列表中 – svz

+1

您的鍵/值對在這裏很不清楚。通常我會希望數據被讀入'List '中,用於某些'Row'類型。雖然你可能想看看Guava的'LinkedHashMultimap'。 –

回答

0

這是地圖是如何工作的,你在這裏有錯誤的容器,你可能想用一個自定義類列表或地圖列表:

public class Data 
{ 
    private String d1; 
    private String d2; 

    public Date (String d1, String d2) 
    { 
     ... 
    } 
    public parsedDataType getD1()... //might be the string, or an number, or something else 
    ... 
} 

public void read() 
{ 
    ... 
    List<Data> data = new LinkedList<>(); 
    ... 
    Data d = new Data(d1,d2); 
    data.add(d); 
} 

或者你可以使用一個地圖列表由建議SVZ:

Map<String,List<String>> data = new HashMap<>(); 
List<String> list = new LinkedList<>(); 
list.add(d1); 
list.add(d2); 
data.put(myKey,list); 

用類列表的adventage是,你可以再裏面處理您的數據(驗證等)

相關問題