2012-06-29 63 views
1

我想知道是否可以排序EntrySet < K,V>基於K的一些屬性使用lambdaj?使用Lambdaj排序地圖/ EntrySet

我不認爲Lambdaj會讓我,我只是想確認。

例如,如果我有一個地圖< A,B>其中A具有以下結構:

public class A{ 
private double published; 

    public double getPublished() 
    { 
      return double; 
    } 
} 

我只能對一個排序的entrySet,使用lambdaj,上A.getPublished?

+0

排序「Set」是什麼意思? 'Set's沒有訂單,對吧? – missingfaktor

+0

我的意思是排序返回的集合。那是什麼lambdaj做對了?它不會改變輸入集合。 – MikePatel

+0

是的,沒錯。感謝澄清。 – missingfaktor

回答

3

不幸的是,你所要求的是不可能的,因爲類型擦除。事實上,假設你有型地圖的地圖,你會想要做的東西是:

sort(map.entrySet(), on(Map.Entry.class).getKey().getPublished()); 

這不起作用,因爲lambdaj不知道Map.Entry的實際上是一個Map.Entry(當然像(Map.Entry.class).getKey()...這樣的語法是不允許的)。這意味着on(Map.Entry.class).getKey()調用只是返回一個Object類的對象,然後你不能調用它的getPublished()方法。

+0

謝謝,這是我懷疑的。一些圖書館(如傑克遜)提供了通過類型擦除擦除擦除類的方法,所以我想知道是否有任何這樣的設施爲lambdaj – MikePatel

+0

你能詳細說明一下嗎?你認爲有可能在lambdaj中改進這一點嗎?如果是這樣如何?傑克遜在這種情況下做什麼? –

+0

@MikePatel,你可以給一個鏈接到你指的這個傑克遜庫嗎?我無法找到它。 – missingfaktor