সি # তে জাভা মানচিত্রের সমতুল্য


150

আমি আমার পছন্দের একটি কী সহ সংগ্রহে আইটেমের একটি তালিকা রাখার চেষ্টা করছি। জাভাতে, আমি নিম্নরূপে মানচিত্রটি ব্যবহার করব:

class Test {
  Map<Integer,String> entities;

  public String getEntity(Integer code) {
    return this.entities.get(code);
  }
}

সি # তে এটি করার সমতুল্য উপায় আছে কি? System.Collections.Generic.Hashsetহ্যাশ ব্যবহার করে না এবং আমি একটি পছন্দসই ধরণের কী সংজ্ঞায়িত করতে পারি না System.Collections.Hashtableজেনেরিক শ্রেণীর
System.Collections.Generic.Dictionaryকোনও get(Key)পদ্ধতি নেই

উত্তর:


181

আপনি অভিধান সূচী করতে পারেন, আপনার 'গেট' দরকার ছিল না।

Dictionary<string,string> example = new Dictionary<string,string>();
...
example.Add("hello","world");
...
Console.Writeline(example["hello"]);

মান পরীক্ষা করার / পাওয়ার একটি কার্যকর উপায় হ'ল TryGetValue(আর্উইকারের চেয়ে থ্যাঙ্কস):

if (otherExample.TryGetValue("key", out value))
{
    otherExample["key"] = value + 1;
}

এই পদ্ধতির সাহায্যে আপনি দ্রুত এবং ব্যতিক্রম-কম মান পেতে পারেন (উপস্থিত থাকলে)।

সম্পদ:

অভিধান-কী

মূল্য পেতে চেষ্টা করুন


14
ট্রাইগেটভ্যালুর পাশাপাশি উল্লেখ করতেও পারে।
ড্যানিয়েল আর্উইকার

এটি কি O(lg(n))জাভা মতো? আমি মনে করি না

1
@ ডেসোলেটর রিডস ও (1), অভিধানের টিউমেন্ট বিভাগটি দেখুন <টি কে, টিভিয়াল> এর এমএসডিএন পৃষ্ঠা
ক্যান্টন 7

17

অভিধান <,> সমতুল্য। যদিও এটিতে (...) পদ্ধতিটি নেই, এতে আইটেম নামে একটি সূচকযুক্ত সম্পত্তি রয়েছে যা আপনি সি # তে সরাসরি সূচক সূচক ব্যবহার করে অ্যাক্সেস করতে পারবেন:

class Test {
  Dictionary<int,String> entities;

  public String getEntity(int code) {
    return this.entities[code];
  }
}

যদি আপনি একটি কাস্টম কী টাইপ ব্যবহার করতে চান তবে আপনার আইকুয়েটেবল <> এবং ওভাররাইডিং সমান (অবজেক্ট) এবং গেটহ্যাশকোড () ওভাররাইডিং বিবেচনা করা উচিত যদি না কীগুলির সাম্যতা নির্ধারণের জন্য ডিফল্ট (রেফারেন্স বা স্ট্রাক্ট) সাম্যতা যথেষ্ট না হয়। কোনও অভিধানে keyোকানোর পরে যদি কোনও কীটি পরিবর্তন করা হয় তবে অদ্ভুত বিষয়গুলি রোধ করতে আপনার কী টাইপটিকে অপরিবর্তনীয় করে তোলা উচিত (উদাহরণস্বরূপ যে রূপান্তরটির ফলে তার হ্যাশ কোডটি পরিবর্তিত হয়েছিল)।


10
class Test
{
    Dictionary<int, string> entities;

    public string GetEntity(int code)
    {
        // java's get method returns null when the key has no mapping
        // so we'll do the same

        string val;
        if (entities.TryGetValue(code, out val))
            return val;
        else
            return null;
    }
}

5
এই উত্তরটি হাস্যকরভাবে পুরানো, তবে ফলাফলটি নির্বিশেষে আপনি মানটি ফিরিয়ে দিতে পারবেন TryGetValue, যেহেতু কী উপস্থিত না থাকলে (যেমন ) valবরাদ্দ করা হবে । nulldefault(string)
dlev
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.