জাভা মানচিত্র কেন সংগ্রহ বাড়ায় না?


146

আমি অবাক হয়ে গেলাম যে Map<?,?>এটি নয় Collection<?>

আমি ভেবেছিলাম এটিকে যদি এ জাতীয় হিসাবে ঘোষণা করা হয় তবে এটি প্রচুর পরিমাণে জ্ঞান অর্জন করবে:

public interface Map<K,V> extends Collection<Map.Entry<K,V>>

সর্বোপরি, একটি Map<K,V>একটি সংগ্রহ Map.Entry<K,V>, তাই না?

সুতরাং এটিরূপে বাস্তবায়ন না হওয়ার কোনও কারণ আছে কি?


একটি সবচেয়ে প্রামাণিক উত্তরের জন্য Cletus জন্য ধন্যবাদ, কিন্তু আমি এখনও ভাবছি করছি কেন, যদি আপনি ইতিমধ্যে একটি দেখতে পারেন Map<K,V>হিসাবে Set<Map.Entries<K,V>>(মাধ্যমে entrySet()), এটা ঠিক যে ইন্টারফেস প্রযোজ্য না পরিবর্তে।

যদি একটি Mapহয় Collectionতবে উপাদানগুলি কী কী? একমাত্র যুক্তিসঙ্গত উত্তর হ'ল "কী-মান জোড়া"

হুবহু, interface Map<K,V> extends Set<Map.Entry<K,V>>দুর্দান্ত হবে!

তবে এটি Mapবিমূর্ততা একটি খুব সীমাবদ্ধ (এবং বিশেষভাবে দরকারী নয়) সরবরাহ করে ।

তবে যদি তা হয় তবে কেন entrySetইন্টারফেস দ্বারা নির্দিষ্ট করা হয়? এটি অবশ্যই কোনওভাবে কার্যকর হতে হবে (এবং আমি মনে করি যে এই অবস্থানের পক্ষে তর্ক করা সহজ!)।

প্রদত্ত কী মানচিত্রে কোন মানটিকে আপনি মূল্য দিতে পারেন তা আপনি জিজ্ঞাসা করতে পারবেন না বা কোনও মান কী তা মানচিত্র তা জেনেও আপনি প্রদত্ত কীটির জন্য এন্ট্রি মুছতে পারবেন না।

আমি বলছি না যে এতটুকুই আছে Map! এটি অন্যান্য সমস্ত পদ্ধতি রাখতে পারে এবং রাখা উচিত (বাদে entrySet, যা এখন অপ্রয়োজনীয়)!


1
ইভেন্ট সেট করুন <মানচিত্র.এন্ট্রি <কে, ভি >> আসলে
মরিস পেরি

3
এটা ঠিক না। এটি যৌক্তিক উপসংহার না হয়ে বরং একটি মতামতের ভিত্তিতে (ডিজাইন এফএকিউতে বর্ণিত)। বিকল্প পদ্ধতির জন্য সি ++ এসটিএল ( এসজিআই / টেক / স্টেল / টেবিল_ফ_কন্টেন্টস एचটিএমএল ) এর ধারকগুলির ডিজাইনের দিকে নজর দিন যা স্টেপানোভের সম্পূর্ণ এবং উজ্জ্বল বিশ্লেষণের উপর ভিত্তি করে।
বেলডাজ

উত্তর:


123

থেকে জাভা সংগ্রহগুলি এপিআই ডিজাইন প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী :

মানচিত্র কেন সংগ্রহ বাড়ায় না?

এটি নকশা দ্বারা ছিল। আমরা মনে করি ম্যাপিংগুলি সংগ্রহ নয় এবং সংগ্রহগুলি ম্যাপিং নয় ings সুতরাং, মানচিত্রটি কালেকশন ইন্টারফেসটি (বা তদ্বিপরীত) প্রসারিত করার পক্ষে কিছুটা অর্থপূর্ণ নয়।

মানচিত্র যদি একটি সংগ্রহ হয় তবে উপাদানগুলি কী কী? একমাত্র যুক্তিসঙ্গত উত্তর হ'ল "কী-মান জোড়", তবে এটি একটি খুব সীমাবদ্ধ (এবং বিশেষভাবে দরকারী নয়) মানচিত্রের বিমূর্ততা সরবরাহ করে। প্রদত্ত কী মানচিত্রে কোন মানটিকে আপনি মূল্য দিতে পারেন তা আপনি জিজ্ঞাসা করতে পারবেন না বা কোনও মান কী তা মানচিত্র তা জেনেও আপনি প্রদত্ত কীটির জন্য এন্ট্রি মুছতে পারবেন না।

মানচিত্র প্রসারিত করার জন্য সংগ্রহ করা যেতে পারে, তবে এটি প্রশ্ন উত্থাপন করে: কীগুলি কী? সত্যিই সন্তোষজনক কোনও উত্তর নেই, এবং জোর করে এক অপ্রাকৃত ইন্টারফেসের দিকে নিয়ে যায়।

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

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

Set<Map.Entry<String,String>>

অনুমতি দেবে:

set.add(entry("hello", "world"));
set.add(entry("hello", "world 2");

(একটি entry()পদ্ধতি তৈরি করে যা Map.Entryউদাহরণ তৈরি করে )

Mapএর জন্য অনন্য কীগুলির প্রয়োজন তাই এটি এটি লঙ্ঘন করবে। বা যদি আপনি কোনও Setএন্ট্রিগুলিতে অনন্য কী চাপিয়ে দেন তবে Setএটি সাধারণ অর্থে আসলেই একটি নয়। এটি Setআরও বিধিনিষেধ সহ একটি ।

যুক্তিযুক্তভাবে আপনি বলতে পারেন equals()/ hashCode()সম্পর্কের জন্য Map.Entryনিখুঁতভাবে মূল কীটি ছিল তবে এমনকি এতে সমস্যা আছে। আরও গুরুত্বপূর্ণ, এটি কি কোনও মান যুক্ত করে? আপনি কোণার কেসগুলির দিকে তাকাতে শুরু করার পরে এই বিমূর্ততাটি ভেঙে যেতে পারে।

এটি লক্ষণীয় যে HashSetএটিকে আসলে একটি হিসাবে প্রয়োগ করা হয়েছে HashMap, অন্যভাবে নয়। এটি নিখুঁতভাবে প্রয়োগের বিশদ তবে তবুও আকর্ষণীয়।

entrySet()অস্তিত্বের মূল কারণ হ'ল ট্র্যাভারসালকে সহজ করা যাতে আপনাকে কীগুলি অতিক্রম করতে হবে না এবং তারপরে কীটি অনুসন্ধান করতে হবে না। এটিকে প্রবেশের (ইমো) Mapহওয়া উচিত এমন প্রথম প্রমাণ হিসাবে গ্রহণ করবেন না Set


1
আপডেটটি খুব দৃinc়প্রত্যয়ী, তবে প্রকৃতপক্ষে ফিরে আসা সেট ভিউ entrySet()সমর্থন করে remove, যদিও এটি সমর্থন করে না add(সম্ভবত ছুড়ে ফেলেছে UnsupportedException)। সুতরাং আমি আপনার
বক্তব্যটি

1
Zwei একটি ভাল পয়েন্ট আনা। এই সমস্ত জটিলতা addযেমন দেখায় তেমনভাবে পরিচালনা করা যায় entrySet(): কিছু ক্রিয়াকলাপের অনুমতি দিন এবং অন্যকে অনুমতি দিন না। একটি প্রাকৃতিক প্রতিক্রিয়া, অবশ্যই, "কি ধরণের Setসমর্থন করে না add?" - ভাল, যদি এই জাতীয় আচরণটি গ্রহণযোগ্য entrySet()হয় তবে এটি কেন গ্রহণযোগ্য নয় this? তাই বলা হয়, আমি আছি বেশিরভাগই কেন এই একটি মহান ধারণা নয় এর ইতিমধ্যে বিশ্বাস হিসাবে আমি একবার মনে হলো, কিন্তু আমি এখনও যদি মনে করেন যে শুধুমাত্র কি একটি ভাল এপিআই / গলি নকশা করে তোলে আমার নিজের বোঝার সমৃদ্ধ করার এটা আরও বিতর্ক যোগ্য নয়।
বহুবৃক্ষের পদার্থগুলি

3
এফএকিউ থেকে উদ্ধৃতিটির প্রথম অনুচ্ছেদটি মজাদার: "আমরা অনুভব করি ... এভাবে ... কিছুটা বোধগম্য নয়"। আমি মনে করি না যে "অনুভূতি" এবং "জ্ঞান" একটি উপসংহার গঠন করে; ও)
পিটার উইপ্পারম্যান

মানচিত্র প্রসারিত করতে সংগ্রহ করা যেতে পারে ? নিশ্চিত নন, কেন লেখকের জন্য মনে Collectionপ্রসারিত Map?
এপ্রিল ওভাররেচেন্জ

11

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

এখানে সমস্যা হ'ল উত্তরাধিকার কেবল এক ধরণের সাধারণতার মডেল । যদি আপনি দুটি জিনিস চয়ন করেন যা উভয়ই "সংগ্রহের মতো" বলে মনে হয় তবে আপনি সম্ভবত তাদের 8 বা 10 টি জিনিস সাধারণভাবে বেছে নিতে পারেন। আপনি জিনিষ "মত সংগ্রহ-" একটি ভিন্ন যুগল নির্ণয় করা, তারা কমন 8 বা 10 জিনিষ হবে - কিন্তু তারা হবে না একই প্রথম জুড়ি হিসাবে 8 বা 10 জিনিষ।

আপনি একটি ডজন বা তাই বিভিন্ন তাকান "সংগ্রহ মত" জিনিষ, কার্যত তাদের প্রত্যেকের সম্ভবত অন্তত একটি অন্যটি সঙ্গে সাধারণ 8 বা 10 বৈশিষ্ট্য ভালো কিছু থাকবে - কিন্তু যদি আপনি তাকান কি জুড়ে ভাগ করা হয়েছে যে এক এর মধ্যে আপনার ব্যবহারিকভাবে কিছুই নেই।

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

কেউ কেউ মূলত এই বিকল্পটিরও বিকল্প গ্রহণ করেন: "এই ধরণের সংগ্রহটি এক্স অপারেশন এক্সকে সমর্থন করে তবে এক্স সংজ্ঞায়িত বেস শ্রেণীর সাহায্যে আপনাকে এটি ব্যবহার করার অনুমতি দেওয়া হয় না, তবে উত্সযুক্ত শ্রেণীর এক্স এক্স ব্যর্থ করার চেষ্টা করা হয় (উদাঃ) , একটি ব্যতিক্রম ছুঁড়ে)।

এটি এখনও একটি সমস্যা ফেলে রেখেছে: আপনি যা ছাড়বেন না এবং আপনি যা রেখেছেন তা নির্বিশেষে আপনাকে কোন ক্লাসে রয়েছে এবং কী বাইরে রয়েছে তার মধ্যে আপনাকে একটি হার্ড লাইন আঁকতে হবে। কোন ব্যাপার যেখানে আপনি যে লাইন আঁকা, আপনি একটি পরিষ্কার, বরং কৃত্রিম, কিছু বিষয় আছে যা দ্বারা মধ্যে বিভাজন সঙ্গে রেখে তা সম্ভব করতে যাচ্ছেন বেশ অনুরূপ।


10

আমি অনুমান করি কেন বিষয়গত।

সি # তে, আমার মনে হয় Dictionaryকোনও সংগ্রহ বাড়ানো বা কমপক্ষে প্রয়োগ করা হয়েছে:

public class Dictionary<TKey, TValue> : IDictionary<TKey, TValue>, 
    ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, 
    IDictionary, ICollection, IEnumerable, ISerializable, IDeserializationCallback

ফরো স্মলটকেও:

Collection subclass: #Set
Set subclass: #Dictionary

তবে কিছু পদ্ধতি সহ একটি অসম্পূর্ণতা আছে। উদাহরণস্বরূপ, collect:অ্যাসোসিয়েশন (একটি প্রবেশের সমতুল্য) do:নেবে, মানগুলি গ্রহণ করার সময় । keysAndValuesDo:এন্ট্রি দিয়ে অভিধানটি পুনরাবৃত্তি করার জন্য তারা অন্য একটি পদ্ধতি সরবরাহ করে। Add:একটি সমিতি নেয়, কিন্তু remove:"দমন করা" হয়েছে:

remove: anObject
self shouldNotImplement 

সুতরাং এটি সুনির্দিষ্টভাবে করণীয়, তবে শ্রেণিবদ্ধতা সম্পর্কিত কিছু অন্যান্য বিষয় নিয়ে আসে।

যা ভাল তা হচ্ছে সাবজেক্টিভ।


3

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


4
এটি কিভাবে Setকাজ Set করে এবং বাস্তবায়ন করে Collection
লিই

2

জাভা সংগ্রহগুলি ভেঙে গেছে। রিলেশনের একটি অনুপস্থিত ইন্টারফেস রয়েছে। অতএব, মানচিত্র রিলেশন সেট প্রসারিত করে। সম্পর্কের (মাল্টি-ম্যাপসও বলা হয়) অনন্য নাম-মান জোড়া রয়েছে। মানচিত্র (ওরফে "ফাংশন") এর অনন্য নাম (বা কী) রয়েছে যা অবশ্যই মানচিত্রের মানচিত্রের। সিকোয়েন্সগুলি মানচিত্রকে প্রসারিত করে (যেখানে প্রতিটি কীটি একটি সংখ্যার> 0) হয়। ব্যাগ (বা একাধিক সেট) মানচিত্রকে প্রসারিত করে (যেখানে প্রতিটি কী একটি উপাদান এবং প্রতিটি মান ব্যাগের মধ্যে উপাদানটি প্রদর্শিত হয় তার সংখ্যা)।

এই কাঠামোটি "সংগ্রহ" এর একটি পরিসীমা ছেদ, ইউনিয়ন ইত্যাদির অনুমতি দেয়। সুতরাং, স্তরক্রমটি হওয়া উচিত:

                                Set

                                 |

                              Relation

                                 |

                                Map

                                / \

                             Bag Sequence

সান / ওরাকল / জাভা পিপিএল - দয়া করে পরের মুহূর্তে এটি পান। ধন্যবাদ।


4
আমি এই কল্পিত ইন্টারফেসগুলির জন্য বিস্তারিত API দেখতে চাই। নিশ্চিত নয় যে আমি একটি সিকোয়েন্স (ওরফে তালিকা) চাই যেখানে চাবিটি একটি পূর্ণসংখ্যা; এটি একটি দুর্দান্ত পারফরম্যান্স হিট বলে মনে হচ্ছে।
লরেন্স ডল

এটা ঠিক, একটি ক্রম একটি তালিকা - সুতরাং ক্রম তালিকা প্রসারিত। আপনি এটি অ্যাক্সেস করতে পারবেন কিনা তা আমি জানি না তবে এটি আকর্ষণীয় portal.acm.org/citation.cfm?id=1838687.1838705
xagyg

@ সফটওয়্যার মনকি এখানে অন্য লিঙ্ক। শেষ লিঙ্কটি এপিআই এর জাভাদোকের লিঙ্ক। zedlib.sourceforge.net
xagyg

@ সফটওয়্যার মনকি আমি লজ্জাজনকভাবে স্বীকার করি যে এখানে নকশাটি আমার প্রাথমিক উদ্বেগ। আমি ধরে নিচ্ছি যে ওরাকল / সনে গুরুগুলি এটিকে বের করে আনতে পারে।
xagyg

আমি দ্বিমত পোষণ করি আপনি যদি সর্বদা আপনার সেটে ডোমেনের অ-সদস্য উপাদানগুলি যোগ করতে না পারেন (তবে @ ক্ল্যাটাসের উত্তরের উদাহরণ হিসাবে) কীভাবে এটি "মানচিত্রটি একটি সেট" ধরে রাখতে পারে?
einpoklum

1

আপনি যদি সম্পর্কিত ডেটা স্ট্রাকচারটি দেখেন তবে সহজেই অনুমান করতে পারেন কেন এটির Mapএকটি অংশ নয় Collection। প্রতিটি Collectionস্টোর Mapকী-মান জুড়ি হিসাবে একক মান সংরক্ষণ করে । সুতরাং Collectionইন্টারফেসের পদ্ধতিগুলি ইন্টারফেসের জন্য বেমানান Map। উদাহরণস্বরূপ আমাদের মধ্যে Collectionআছে add(Object o)। এই ধরনের বাস্তবায়ন কি হবে Map। এটি যেমন একটি পদ্ধতি আছে বুদ্ধিমান না Map। পরিবর্তে আমরা একটি put(key,value)পদ্ধতি আছে Map

একই যুক্তি জন্য যায় addAll(), remove()এবং removeAll()পদ্ধতি। সুতরাং প্রধান কারণ উপায় ডেটা পার্থক্য মধ্যে সংরক্ষিত হয় Mapএবং Collection। এছাড়াও যদি আপনি Collectionইন্টারফেস বাস্তবায়িত Iterableইন্টারফেস প্রত্যাহার করেন অর্থাত্ .iterator()পদ্ধতি সহ যে কোনও ইন্টারফেসের একটি পুনরাবৃত্তির ফিরিয়ে দেওয়া উচিত যা অবশ্যই আমাদের মধ্যে সঞ্চিত মানগুলিকে পুনরাবৃত্তি করতে দেয় Collection। এখন এ জাতীয় পদ্ধতিটি কোনটির জন্য ফিরে আসবে Map? কী পুনরাবৃত্তকারী বা একটি মান পুনরাবৃত্তি? এটিও বোঝা যায় না।

এমন উপায় রয়েছে যার মাধ্যমে আমরা কীগুলিতে এবং মানগুলির স্টোরগুলিতে পুনরাবৃত্তি করতে পারি এবং Mapএটি Collectionকাঠামোর একটি অংশ how


There are ways in which we can iterate over keys and values stores in a Map and that is how it is a part of Collection framework.আপনি কি এর জন্য একটি কোড উদাহরণ দেখাতে পারেন?
রামনেন শেফ

এটি খুব ভালভাবে ব্যাখ্যা করা হয়েছিল। আমি এটাকে এখন পেলাম. ধন্যবাদ!
আমির মেমিক 20'17

একটি বাস্তবায়ন add(Object o)একটি Entry<ClassA, ClassB>অবজেক্ট যুক্ত করা হবে। একটি Mapএকটি বিবেচনা করা যেতে পারেCollection of Tuples
LIvanov

0

হুবহু, interface Map<K,V> extends Set<Map.Entry<K,V>>দুর্দান্ত হবে!

আসলে, যদি তা হয় implements Map<K,V>, Set<Map.Entry<K,V>>, তবে আমি রাজি হই .. এটি এমনকি স্বাভাবিক বলে মনে হয়। কিন্তু এটি খুব ভাল কাজ করে না, তাই না? আসুন আমরা বলি যে HashMap implements Map<K,V>, Set<Map.Entry<K,V>, LinkedHashMap implements Map<K,V>, Set<Map.Entry<K,V>ইত্যাদি ... এটি সর্বোত্তম, তবে যদি আপনি entrySet()থাকতেন তবে কেউই এই পদ্ধতিটি প্রয়োগ করতে ভুলে যাবেন না এবং আপনি নিশ্চিত হতে পারেন যে কোনও মানচিত্রের জন্য আপনি এন্ট্রিসেট পেতে পারেন, তবে আপনি যদি আশা করেন না তবে যে বাস্তবায়নকারী উভয় ইন্টারফেস প্রয়োগ করেছে ...

যে কারণটি আমি রাখতে চাই না তা interface Map<K,V> extends Set<Map.Entry<K,V>>হ'ল সহজ উপায়, কারণ আরও পদ্ধতি থাকবে। এবং সর্বোপরি, তারা বিভিন্ন জিনিস, তাই না? এছাড়াও খুব ব্যবহারিকভাবে, যদি আমি map.আইডিইতে হিট করি তবে আমি দেখতে চাই না .remove(Object obj)এবং .remove(Map.Entry<K,V> entry)কারণ আমি এটি করতে পারি না hit ctrl+space, r, returnএবং এটি দিয়েই হয়ে যাই ।


আমার কাছে মনে হয় যে যদি কেউ শব্দার্থে দাবি করতে পারে যে "মানচিত্রটি একটি মানচিত্রের উপর একটি সেট। এবং যদি কেউ এই বিবৃতি দিতে না পারে, তবে কেউ তা করবে না - অর্থাত্ এটি বিরক্তিকর হওয়া উচিত।
einpoklum

0

Map<K,V>Set<Map.Entry<K,V>>যেহেতু প্রসারিত করা উচিত নয় :

  • আপনি একই কী দিয়ে বিভিন্ন এস যুক্ত করতে পারবেন না , তবেMap.EntryMap
  • আপনি একই কী দিয়ে বিভিন্ন এস যুক্ত করতে পারেনMap.EntrySet<Map.Entry>

... এটি @ ক্লেটাসের উত্তরের দ্বিতীয় অংশের ভুতের সংক্ষিপ্ত বিবৃতি।
einpoklum

-2

সোজা এবং সরল। সংগ্রহ হ'ল একটি ইন্টারফেস যা কেবলমাত্র একটি অবজেক্টের প্রত্যাশা করে, যেখানে মানচিত্রে দুটি প্রয়োজন।

Collection(Object o);
Map<Object,Object>

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