2016-07-06 63 views
-2

因此,我有一個LinkedHashMap,它的鍵爲Float[]數組,值爲LinkedList<LinkedList>(嵌套列表)。對於每個鍵,我嘗試按數字順序排序值,這是通過比較該嵌套列表中的浮點值獲得的。具體爲:使用自定義lambda比較器的Java HashMap排序

// copy of an original hashmap 
LinkedHashMap<Float[], LinkedList<LinkedList>> tempMap = new LinkedHashMap<>(attrMap); 

然後比較:

// i is index of numeric (float) value I want to sort with 
Comparator<LinkedList> comp = (a, b)-> ((Float) a.get(i)).compareTo((Float) b.get(i)); 
tempMap.get(keyObj).sort(comp); 

這地圖不排序。我怎麼修復它?

EDIT2:既然是棘手的複製實際的代碼,這裏是我的github link的源代碼。代碼片段位於分析器類的biConvert()方法下。

+0

你能[編輯]你的問題和後短,但完整的例子,我們可以複製,粘貼到我們的機器和重現您的問題(可能是通過建立這樣的例子,你也會找出你的問題的原因)。 – Pshemo

+0

你的例子不會編譯,例如'l.append(..)'。請嘗試發佈不會引入與您的問題無關的錯誤的代碼。 – Pshemo

+0

很抱歉,但鏈接不能只是源代碼,這是不行的,尤其是當你想以後矯正鏈接代碼會取消的問題。堆棧溢出的目的是爲將來的用戶提供可搜索的存儲庫,所以如果你的問題沒有包含足夠的信息來重現你自己的問題,那麼恐怕這裏就成爲焦點話題。 – Pshemo

回答

0

分配排序結果相同的地圖

+0

從我記得'list.sort(比較)'不會返回新的列表,但重新安排一個上,我們調用的方法,所以改變應該是可見的,從任何地方使用該列表(包括地圖,已經持有清單)。 – Pshemo

+0

不好意思,你能解釋一下你想要分類什麼嗎?浮動或列表? –

+0

我不是這個問題的作者(所以你可能需要張貼在疑問,意見,而不是你的答案,如果你想筆者對此通知),但是從我所看到的OP(樓主)要排序列表,它包含其他列表(可能包含浮動)。我看到這樣的列表,比如第一個列表包含行,第二個列和OP的值希望根據選定的列對行進行排序。 – Pshemo