2016-11-28 10 views
1

私はマップを持っている:キーの1つのフィールドでマップから値を取得する方法は?

public class MyKey { 
    ... 
    private long id; 
    ... 
} 

Map<MyKey, String> myMap; 

MyKey.idフィールドでmyMapから値を取得する方法は?

+0

あなたは一致するものを見つけたり、新しい地図キーが 'O(1)'で – Eran

+2

をMyKey.idされた場合、することはできませんを構築するためにすべてのエントリを反復処理する必要がありますどちらか。あなたの 'MyKey'が' MyKey.id'に基づいて 'equals'と' hashCode'を実装していない限り。この場合、適切な 'id'を持つ' MyKey'を使って 'get'を呼び出すことができます。 –

+0

'equals'メソッドと' hashCode'メソッドをオーバーライドする必要があります。 –

答えて

1

C#で回答を見つけてください。私はLinq式を使って同じことを達成できると思います。以下のサンプルコードを参考にしてください。

public class MyKey 
    { 
     public long ID { get; set; } 
    } 

    static void Main(string[] args) 
    { 
     Dictionary<MyKey, String> myMap = new Dictionary<MyKey, string>(); 
     myMap.Add(new MyKey() { ID = 100 }, "One"); 
     myMap.Add(new MyKey() { ID = 200 }, "Two"); 
     myMap.Add(new MyKey() { ID = 300 }, "Three"); 

     long searchKey = 200; 
     string value = myMap[myMap.Keys.FirstOrDefault(x => x.ID == searchKey)]; 
    } 
+0

はい、java8では次のようになります。 'Map myMap; オプション myKeyOptional = myMap.keySet()。stream()。filter(myKey-> myKey.getId()== someId).findFirst(); if(myKeyOptional.isPresent()){ name = myMap.get(myKeyOptional.get()); } ' – Paul

+0

あなたの助けを知ってうれしいです...ありがとう – VipinKV

関連する問題