亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何對 MultiValuedMap 中包含的雙精度 ArrayList 進行排序

如何對 MultiValuedMap 中包含的雙精度 ArrayList 進行排序

叮當貓咪 2023-04-13 16:55:41
我有一個 MultiValuedMap(Apache commons),其中包含字符串鍵和存儲在雙精度數組列表中的值,從文件中讀取。我不需要對鍵進行排序,但我確實需要對與每個鍵關聯的 ArrayList 進行排序。有沒有辦法做到這一點?我試過 Collections.sort 但它似乎不適用于 MultiValuedMap。我還沒有嘗試創建比較器,但我不確定如何為地圖中的某些內容開始一個比較器。//Read file of data to be placed in MultiValuedMap BufferedReader br = new BufferedReader(new FileReader(fileName));String line = "";String csvSplitBy = ",";//Create the MultiValuedMap    MultiValuedMap<String, Double> mvMap = new ArrayListValuedHashMap<>();//Read data into MultiValuedMapwhile ((line = br.readLine()) != null) {       String[] cols = line.split(csvSplitBy);       mvMap.put(cols[4], Double.parseDouble(cols[3]));  //This gives an errorCollections.sort(mvMap);我從 Collections.sort 得到的錯誤是“沒有合適的排序方法(MultiValuedMap)”我不想對鍵進行排序,只是對值進行排序。所以預期的輸出應該是這樣的:44 => [284.5, 289.35, 300.53, 534.0] 和 41 => [311.82, 368.45, 400.2]
查看完整描述

3 回答

?
嚕嚕噠

TA貢獻1784條經驗 獲得超7個贊

根據 java docs MultiValuedMapimplementsMap的 get。所以編譯器假設我們從中獲得的值類型MultiValuedMap.get() 是Double

我會Collections.sort(mvMap);用類似的方法做一個解決方法

for (String key : mvMap.keySet()) 
    mvMap.put(key, Collections.sort((List<Double>)mvMap.get(key));
}


查看完整回答
反對 回復 2023-04-13
?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

Collections.sort需要一個可以排序的 Collection。您正在向它傳遞一個無法排序的 MultiValuedMap。相反,您需要做的是調用Collections.sort每個單獨的 ArrayList。

像這樣的東西應該可以工作(我還沒有看到實際的庫,但這是遵循地圖約定)

for(String s: mvMap.keySet()){
    Collections.sort(mvMap.get(s));
}

遍歷每個字符串并使用給定的列表對其進行排序



查看完整回答
反對 回復 2023-04-13
?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

到目前為止,我已經嘗試了所有的建議(謝謝?。?,但都收到了某種類型的不兼容錯誤。


我唯一能做的就是創建一個解決方法并創建一個新的常規 HashMap 并將 ArrayList 從 mvMap 拉入 ArrayList,對其進行排序,然后將其放入新的 HashMap。這不是超級有效,但這是我能夠想出的,并且有效。不過,如果您有任何其他建議,請告訴我,我會繼續嘗試。感謝您的幫助!


這是我添加的內容:


//Declared with the other variables

HashMap<String, List<Double>> sortedMap = new HashMap<String, List<Double>>();


//Added after the while loop

for (String key : mvMap.keySet()) {

    List<Double> list = new ArrayList<Double>(mvMap.get(key));

    Collections.sort(list);

    sortedMap.put(key, list);

}


查看完整回答
反對 回復 2023-04-13
  • 3 回答
  • 0 關注
  • 143 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號