কী নামের উপর নির্ভর করে হাশম্যাপ থেকে স্ট্রিংয়ের মান পান


123

আমার কাছে HashMapবিভিন্ন কী এবং মান রয়েছে, আমি কীভাবে একটি মান খুঁজে পেতে পারি?

আমার কাছে মানচিত্রে একটি চাবি আছে my_code, এটিতে একটি স্ট্রিং থাকা উচিত, আমি কীভাবে মানচিত্রের মাধ্যমে পুনরাবৃত্তি না করে এটি পেতে পারি?

এখন পর্যন্ত আমি পেয়েছি ..

   HashMap newMap = new HashMap(paramMap);
   String s = newMap.get("my_code").toString();

আমি String"এবিসি" বা "ডিইএফ" এর মতো একটি দেখার প্রত্যাশা করছি যা প্রথমদিকে সেখানে রেখেছিলাম তবে আমি যদি এটি করি তবে আমার System.out.println()মতো কিছু পাওয়া যায়java.lang.string#F0454

দুঃখিত, আমি সম্ভবত মানচিত্রের সাথে খুব বেশি পরিচিত নই;)

উত্তর:


166

শুধু ব্যবহার করবেন Map#get(key)?

Object value = map.get(myCode);

এখানে মানচিত্র সম্পর্কে একটি টিউটোরিয়াল, আপনি এটি লাভজনক হতে পারে: http://java.sun.com/docs/books/tutorial/collections/interfaces/map.html

সম্পাদনা করুন: আপনি নিম্নলিখিতটি দিয়ে আপনার প্রশ্ন সম্পাদনা করেছেন:

আমি "স্ট্রিং, যেমন" এবিসি "বা" ডিইএফ "দেখতে প্রথম দিকে সেখানে রেখেছি বলে প্রত্যাশা করছি, তবে যদি আমি একটি সিস্টেম.আউট.প্রিন্টলন () করি তবে আমি java.lang.string # এর মতো কিছু পাব # F0454

দুঃখিত, আমি সম্ভবত মানচিত্রের সাথে খুব বেশি পরিচিত নই;)

আপনি এর ফলাফল দেখতে পাচ্ছেন Object#toString()। কিন্তু java.lang.Stringইতিমধ্যে এক, বাস্তবায়িত হওয়া উচিত ছিল, যদি না আপনি একটি নির্মিত কাস্টম ছোট হাতের সঙ্গে বাস্তবায়ন sনামে: java.lang.string। যদি এটি আসলে একটি কাস্টম অবজেক্ট হয়, তবে আপনি Object#toString()যখনই কাঙ্ক্ষিত অবজেক্টটি করেন System.out.println()বা "মানব পঠনযোগ্য স্ট্রিং" পেতে আপনাকে ওভাররাইড করতে হবে toString()। উদাহরণ স্বরূপ:

@Override
public String toString() {
    return "This is Object X with a property value " + value;
}

1
অবশ্যই, যদি আপনি একটি কাস্টম স্ট্রিং ক্লাস তৈরি করে থাকেন তবে আমি সুপারিশ করব (1) এটি না করা, যেহেতু সম্ভবত আপনি যা করতে চান তা নয় এবং (2) আপনি যদি এটি করতে যাচ্ছেন তবে এটি এটিকে রাখবেন না java.lang নেমস্পেস।
ম্যাট্রিক্সফ্রোগ

1
যদি হ্যাশম্যাপ <স্ট্রিং, স্ট্রিং> নতুনম্যাপ = নতুন হ্যাশম্যাপ <স্ট্রিং, স্ট্রিং> (); এই থেকে স্ট্রিং উপাদান পেতে কিভাবে ...? যেখানে স্ট্রিংয়ের মান = newMap.get ("আমার_কোড"); ত্রুটি দেয়
সৈয়দ কিলারু

আপনি কিভাবে বিপরীত করতে পারেন? মান থেকে কী পান?
বিতরণ করুন

58

যদি আপনি কী / মানগুলি স্ট্রিং হিসাবে সংরক্ষণ করেন তবে এটি কাজ করবে:

HashMap<String, String> newMap = new HashMap<String, String>();
newMap.put("my_code", "shhh_secret");
String value = newMap.get("my_code");

প্রশ্নটি হ্যাশম্যাপে কী কী জনবসতিপূর্ণ হয় (কী এবং মান)


যদি হ্যাশম্যাপ <স্ট্রিং, স্ট্রিং> নতুনম্যাপ = নতুন হ্যাশম্যাপ <স্ট্রিং, স্ট্রিং> (); এই থেকে স্ট্রিং উপাদান পেতে কিভাবে ...? যেখানে স্ট্রিংয়ের মান = newMap.get ("আমার_কোড"); ত্রুটি দেয়
সৈয়দ কিলারু

11

আপনি যদি জেনেরিক্স ব্যবহার করেন এবং আপনার মানচিত্রটিকে সংজ্ঞায়িত করেন

Map<String,String> map = new HashMap<String,String>();

তারপর মান হিসাবে আনয়ন

 String s = map.get("keyStr"); 

স্ট্রিংয়ের মান পাওয়ার জন্য আপনাকে ম্যাপ.জেট () বা টুস্ট্রিং পদ্ধতিতে টাইপকাস্ট করতে হবে না


9

আপনার প্রশ্নটি মোটেও পরিষ্কার নয় যে আমি ভীত। একটি কীতে "নাম" নেই; এটিকে মানচিত্রের যতটুকু বলা যায় তেমন কিছু বলা হয় না - এটি কেবল একটি চাবি, এবং অন্যান্য কীগুলির সাথে তুলনা করা হবে। আপনার কাছে যদি প্রচুর ধরণের কী থাকে তবে আমি দৃ strongly়তার সাথে পরামর্শ দিচ্ছি যে আপনি এগুলি বিভিন্ন মানচিত্রে রেখেছেন ity

যদি এটি সাহায্য না করে তবে দয়া করে প্রশ্নটি পরিষ্কার করুন - আপনি কী বোঝাতে চাইছেন তা प्राथमिकভাবে প্রমাণ করার জন্য কিছু কোড সহ।



6

এখানে লক্ষণীয় একটি গুরুত্বপূর্ণ বিষয় হ'ল যদি আপনার কীটি জাভাতে ব্যবহারকারী-সংজ্ঞায়িত শ্রেণীর অবজেক্ট হয় তবে এটি সমান পদ্ধতিতে ওভাররাইড করার জন্য এটি একটি বিন্দু করুন। কারণ হ্যাশম্যাপ.জেট (অবজেক্ট কী) পদ্ধতি মূল মানটির সাথে সমান পদ্ধতি ব্যবহার করে method আপনি যদি সমান পদ্ধতিটিকে ওভাররাইড না করেন তবে এটি কীটির উল্লেখের ভিত্তিতে কেবল কীটির সত্যিকারের মানের উপর ভিত্তি করে সন্ধান করার চেষ্টা করবে যে ক্ষেত্রে এটি সর্বদা বাতিল হয়ে যাবে।


gr8 ব্যাখ্যা ম্যাম :)
eLemEnt

3

ধরুন আপনি হ্যাশম্যাপকে এই হিসাবে ঘোষণা করেছেন: -

HashMap<Character,Integer> hs = new HashMap<>();

তারপরে, মানচিত্রের কীটি অক্ষরের ডেটা টাইপ এবং প্রকারের টাইপের মান N এখন কী, মানের ধরণ নির্বিশেষে মূল কী সম্পর্কিত মান পেতে, সিনট্যাক্সটি হ'ল: -

    char temp = 'a';
    if(hs.containsKey(temp)){
`       int val = hs.get(temp); //val is the value corresponding to key temp
    }

সুতরাং, আপনার প্রশ্ন অনুসারে আপনি একটি কী অনুসারে স্ট্রিংয়ের মান পেতে চান this এর জন্য, কেবলমাত্র হ্যাশম্যাপকে হ্যাশম্যাপ <"কী এর ডেটাটাইপ", "মানের ডেটাটাইপ" hs = নতুন হ্যাশম্যাপ <> () হিসাবে ঘোষণা করুন; এটি ব্যবহারের ফলে আপনার কোডটি ক্লিনার হয়ে যাবে এবং আপনাকে hs.get ("my_code") এর ফলাফলটিকে স্ট্রিংয়ে রূপান্তর করতে হবে না ডিফল্ট হিসাবে এটি স্ট্রিংয়ের মান ফেরত দেয় যদি প্রবেশের সময় কোনও স্ট্রিং হিসাবে মান রাখে।


1

এটি মানচিত্রে কী এবং মানগুলি পেতে কীসেট (), ((), মান () এবং এন্ট্রিসেট () ফাংশনগুলি কীভাবে ব্যবহার করতে হয় তার অন্য একটি উদাহরণ:

        Map<Integer, String> testKeyset = new HashMap<Integer, String>();

        testKeyset.put(1, "first");
        testKeyset.put(2, "second");
        testKeyset.put(3, "third");
        testKeyset.put(4, "fourth");

        // Print a single value relevant to a specified Key. (uses keySet())
        for(int mapKey: testKeyset.keySet())
            System.out.println(testKeyset.get(mapKey));

        // Print all values regardless of the key.
        for(String mapVal: testKeyset.values())
            System.out.println(mapVal.trim());

        // Displays the Map in Key-Value pairs (e.g: [1=first, 2=second, 3=third, 4=fourth])
        System.out.println(testKeyset.entrySet());

0

আপনি হ্যাশম্যাপ থেকে get (অবজেক্ট কী) পদ্ধতিটি ব্যবহার করতে পারেন। সচেতন থাকুন যে আমি অনেক ক্ষেত্রে আপনার কী ক্লাসের সমান পদ্ধতিটি ওভাররাইড করে, মানচিত্র কীটির জন্য দরকারী বর্গ হতে পারি।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.