পাইথন ডিকোরিয়ানের জাভা সমান


95

আমি পাইথনের দীর্ঘকালীন ব্যবহারকারী এবং অভিধানগুলি যেভাবে ব্যবহৃত হয় তা সত্যিই পছন্দ করি। এগুলি অত্যন্ত স্বজ্ঞাত এবং ব্যবহারযোগ্য। পাইথনের অভিধানের সমান কোনও ভাল জাভা আছে কি? আমি হ্যাশম্যাপ এবং হ্যাশ টেবিল ব্যবহার করার কথা শুনেছি। অজগরটির অভিধানগুলি বনাম হ্যাশ টেবিল এবং হ্যাশম্যাপ ব্যবহারের মিল এবং পার্থক্যগুলি কেউ ব্যাখ্যা করতে পারেন?

উত্তর:


108

পাইথনের dictক্লাস হ'ল পাইথন ডকুমেন্টেশন যা অনানুষ্ঠানিকভাবে " ম্যাপিংয়ের ধরণ " বলে। অভ্যন্তরীণভাবে, dictএকটি হ্যাশটেবল ব্যবহার করে প্রয়োগ করা হয়।

জাভার HashMapক্লাস Mapইন্টারফেসের একটি বাস্তবায়ন । অভ্যন্তরীণভাবে, HashMapএকটি হ্যাশটেবল ব্যবহার করে প্রয়োগ করা হয়।

সিনট্যাক্সে কয়েকটি ছোটখাটো পার্থক্য রয়েছে এবং আমি বিশ্বাস করি বাস্তবায়নগুলি কিছুটা আলাদাভাবে সুর করা হয়েছে তবে সামগ্রিকভাবে তারা সম্পূর্ণ পরিবর্তিত হয়।


42
কোনও উদাহরণ সরবরাহ করা হয়নি :(
কামরান বিগডেলি

4
@ কামি: আপনি কী ধরনের উদাহরণ চান?
ড্যানিয়েল প্রাইডেন

4
অজগরটির অভিধানের কার্যক্রমে জাভা সমতুল্য যে কোনও উদাহরণ উদাহরণস্বরূপ। একটি দরকারী উত্তরের কয়েকটি উদাহরণ অন্তর্ভুক্ত কারণ বেশিরভাগ লোক এখানে উদাহরণ দেখতে আসে এবং তাদের কোডগুলিতে তাদের ব্যবহার করে।
কামরান বিগডেলি

14
@ কামি: আমি ঠিক মনে করি না। প্রশ্নটি জিজ্ঞাসা করে না "কিছু নির্দিষ্ট পাইথন কোডের জন্য সমতুল্য জাভা কোডটি কী"? আসলে প্রশ্নটিতে কোনও কোড নেই। আমি জাভাতে মানচিত্র এপিআই ব্যবহারের উদাহরণ যুক্ত করার সাথে মানটি কী হবে তা নিশ্চিত নই; এই উত্তরটি ইতিমধ্যে ক্যানোনিকাল ডকুমেন্টেশনের লিঙ্ক করেছে। আপনি যদি জাভা শিখতে চান তবে স্ট্যাক ওভারফ্লো নয়, একটি টিউটোরিয়াল দিয়ে শুরু করুন। আমি অবশ্যই মনে করি না যে এই উত্তরটি একটি ডাউনভোটকে ওয়ারেন্ট দেয় কেবল কারণ এটির অনুলিপি-পেস্টেবল কোডের নমুনা নেই।
ড্যানিয়েল প্রাইডেন

4
"বেশিরভাগ লোকেরা এখানে উদাহরণ দেখতে আসে এবং তাদের কোডগুলিতে তাদের ব্যবহার করে " বলে মন্তব্যটি পড়ে দুঃখিত , আমি আশা করি এটি ভুল।
0xc0de

31

অভিধান এবং মানচিত্রের ধারণাটি একই রকম। উভয়ই মত উপাদান থাকে

key1:value1, key2:value2 ... and so on

জাভাতে, Mapবিভিন্নভাবে প্রয়োগ করা হয় HashMap, বা TreeMapইত্যাদি put(), get()ক্রিয়াকলাপ একই রকম

import java.util.HashMap;

Map map = new HashMap();
// Put elements to the map
map.put("Ram", new Double(3434.34));
map.put("Krishna", new Double(123.22));
map.put("Hary", new Double(1378.00));
//to get elements
map.get("Krishna"); # =123.22
map.get("Hary"); # = 1378.00 

Java8 https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html এ হ্যাশম্যাপের ডকুমেন্টেশন দেখুন


5

আমি যতদূর সচেতন (আমি আসলে জাভা ব্যবহার করি না) অভিধানগুলি হ্যাশম্যাপ / হ্যাশ টেবিলের অন্য একটি নাম।

Http://www.fluffycat.com/ জাভা / হ্যাশম্যাপস / এর কোড গ্র্যাবিংয়ের মাধ্যমে মনে হচ্ছে এগুলি বেশ কিছু অতিরিক্ত জাভা বয়লার-প্লেট সহ খুব অনুরূপভাবে ব্যবহৃত হয়।


4
জাভা এমনকি একটি অভিধান ইন্টারফেস আছে যা হ্যাশটেবল দ্বারা প্রয়োগ করা হয়। যদিও হ্যাশম্যাপটি সাধারণত পছন্দ হয়।
মাইকেল মায়ার্স

4
@Michael ম্যাইইয়ার্স: অভিধান নিন্দা করা হয়েছে, ওরাকল ম্যাপ পরিবর্তে ব্যবহার করার জন্য পরামর্শ দেওয়া হচ্ছে docs.oracle.com/javase/7/docs/api/java/util/Dictionary.html
Broken_Window

5

দুজনের মধ্যে একটি পার্থক্য dict ডেটা কী কী হিসাবে কী হিসাবে কাজ করতে পারে সম্পর্কে কঠোর প্রয়োজনীয়তা রয়েছে। জাভা যেকোন বস্তুকে কী হিসাবে কাজ করতে অনুমতি দেবে - যদিও আপনার অবশ্যই এই যত্নের যত্ন নেওয়া উচিত যে অবজেক্টের hashCode()পদ্ধতিটি একটি অনন্য মান দেয় যা তার অভ্যন্তরীণ অবস্থাকে প্রতিফলিত করে। পাইথনকে হ্যাশেবলের সংজ্ঞা অনুযায়ী ফিট করার জন্য কীগুলি প্রয়োজন , যা নির্দিষ্ট করে যে অবজেক্টের হ্যাশ কোডটি তার জীবদ্দশায় কখনও পরিবর্তন হবে না।


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

4
আমার অভিজ্ঞতায় পাইথনের প্রায় কোনও কিছুই ডিক কী হতে পারে ... 'কঠোর প্রয়োজনীয়তা' কী?
রন কালিয়ান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.