সবচেয়ে ভালো উপায় একটি রূপান্তর করতে কি Map<key,value>
একটি থেকে List<value>
? সমস্ত মানগুলির উপরে কেবল পুনরাবৃত্তি করুন এবং সেগুলি একটি তালিকায় ?োকান বা আমি কি কিছু উপেক্ষা করছি?
সবচেয়ে ভালো উপায় একটি রূপান্তর করতে কি Map<key,value>
একটি থেকে List<value>
? সমস্ত মানগুলির উপরে কেবল পুনরাবৃত্তি করুন এবং সেগুলি একটি তালিকায় ?োকান বা আমি কি কিছু উপেক্ষা করছি?
উত্তর:
List<Value> list = new ArrayList<Value>(map.values());
অভিমানী:
Map<Key,Value> map;
Collection
থেকে List
কাজ করবে।
keySet()
এবং values()
সাধারণত শিম বস্তু যা অন্তর্নিহিত কাঠামোর একটি সেট বা সংগ্রহ দৃশ্য দেয় ( keySet()
কোনও ডুপকে জোর দেওয়ার জন্য একটি সেট দেয়)। কারণ values()
, প্রত্যাবর্তিত বস্তুটি একটি হতে পারে List
তবে প্রায়শই তা হয় না। একটি সত্যিকারের তালিকা তৈরি করা, যেমন আপনি বলেছেন, লিঙ্কটি ভেঙে যায় যার অর্থ আপনি আর মূল ম্যাপের উপর নির্ভরশীল নন। যদিও কখনও কখনও, আপনার কেবলমাত্র একটি তালিকা প্রয়োজন কারণ কিছু এপিআইয়ের একটি প্রয়োজন - এমন একটি নিয়মকে আরও জোরদার করা যে কোনও ভাল এপিআইয়ের সাথে এটির সর্বাধিক বিমূর্ত ইন্টারফেসের প্রয়োজন হয় ...
এখানে সমস্যাটি হ'ল Map
দুটি মান (একটি কী এবং মান) রয়েছে যখন List
একটির মধ্যে কেবল একটির মান (একটি উপাদান) থাকে।
অতএব, সবচেয়ে ভাল যেটি করা যায় তা হ'ল হয় List
কী বা মানগুলি পাওয়া। (যদি না আমরা কী / মান জোড় ধরে রাখতে একটি মোড়ক তৈরি করি)।
বলুন আমাদের একটি রয়েছে Map
:
Map<String, String> m = new HashMap<String, String>();
m.put("Hello", "World");
m.put("Apple", "3.14");
m.put("Another", "Element");
হিসেবে কী List
একটি নতুন তৈরি করে প্রাপ্ত করা যাবে ArrayList
A থেকে Set
ফিরিয়ে দেওয়া Map.keySet
পদ্ধতি:
List<String> list = new ArrayList<String>(m.keySet());
যদিও একটি হিসাবে মানগুলি পদ্ধতিটি দ্বারা ফেরত থেকে একটি List
নতুন তৈরি করা যায় :ArrayList
Collection
Map.values
List<String> list = new ArrayList<String>(m.values());
List
কীগুলির কী পাওয়ার ফলাফল :
আপেল অন্য হ্যালো
List
মানগুলির প্রাপ্তির ফলাফল :
3.14 উপাদান বিশ্ব
HashMap
এবং অনুরূপ আন-সাজানো Map
বাস্তবায়নের এটা কার্যকরভাবে র্যান্ডম হতে হবে।
জাভা 8 স্ট্রিমস এপিআই ব্যবহার করে।
List<Value> values = map.values().stream().collect(Collectors.toList());
map.entrySet()
Map.Entry
কী এবং মান উভয় সমন্বিত বস্তুর সংকলন দেয় । এরপরে আপনি এটিকে আপনার পছন্দ মতো যে কোনও সংগ্রহ সামগ্রীতে রূপান্তর করতে পারেন new ArrayList(map.entrySet())
;
একটি তালিকা কি?
ধরে map
নেওয়া আপনার উদাহরণMap
map.values()
Collection
মানচিত্রের সমস্ত মান সহ একটি ফিরিয়ে দেবে ।map.keySet()
Set
মানচিত্রের সমস্ত কী ব্যবহার করে ফিরিয়ে দেবে ।আমি অনুমান আপনি মান অন্তর্ভুক্ত রূপান্তর করতে চান Map
একটি থেকে list
? ইন্টারফেসের values()
পদ্ধতিটি কল করা সবচেয়ে সহজ Map
। Collection
এটিতে থাকা মানের অবজেক্টগুলিকে ফিরিয়ে দেবে Map
।
নোট করুন যে Collection
এটি Map
অবজেক্টটির দ্বারা সমর্থনপ্রাপ্ত এবং অবজেক্টে যে কোনও পরিবর্তন Map
এখানে প্রতিফলিত হবে। সুতরাং আপনি যদি কোনও পৃথক অনুলিপি চান যা আপনার Map
অবজেক্টের সাথে আবদ্ধ নয় , কেবল নীচের List
মত ArrayList
মানটি পাস করার মতো একটি নতুন অবজেক্ট তৈরি করুন Collection
।
ArrayList<String> list = new ArrayList<String>(map.values());
আপনি এটি এইভাবে করতে পারেন
List<Value> list = new ArrayList<Value>(map.values());
আপনি যদি ফলাফলের মানগুলি ইনপুটটির List<Value>
কী- অর্ডারে থাকে তা নিশ্চিত করতে চান তবে আপনাকে কোনওভাবে Map<Key, Value>
"যেতে হবে" needSortedMap
উভয় ক্ষেত্রেই শুরু একটি কংক্রিট সঙ্গে SortedMap
বাস্তবায়ন (যেমন TreeMap
) অথবা আপনার ইনপুট সন্নিবেশ Map
একটি মধ্যে SortedMap
যে রূপান্তর করার আগে List
। উদাহরণ:
Map<Key,Value> map;
List<Value> list = new ArrayList<Value>( new TreeMap<Key Value>( map ));
অন্যথায় আপনি Map
বাস্তবায়নের অর্ডারিংয়ের যা দেশীয় অর্ডার দেন তা পেয়ে যাবেন , যা প্রায়শই প্রাকৃতিক কী অর্ডারিং (ভিন্ন ভিন্নর জন্য চেষ্টা করুন ) Hashtable
বা অন্য কিছু হতে পারে ConcurrentHashMap
।
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("java", 20);
map.put("C++", 45);
Set <Entry<String, Integer>> set = map.entrySet();
List<Entry<String, Integer>> list = new ArrayList<Entry<String, Integer>>(set);
আমাদের তালিকায় কী এবং মান জোড়া উভয় থাকতে পারে l এছাড়াও মানচিত্রের সাহায্যে কী এবং মান পেতে পারে list তালিকার উপরে পুনরাবৃত্তি করে এন্ট্রি।
// you can use this
List<Value> list = new ArrayList<Value>(map.values());
// or you may use
List<Value> list = new ArrayList<Value>();
for (Map.Entry<String, String> entry : map.entrySet())
{
list.add(entry.getValue());
}
"Map<String , String > map = new HapshMap<String , String>;
map.add("one","java");
map.add("two" ,"spring");
Set<Entry<String,String>> set = map.entrySet();
List<Entry<String , String>> list = new ArrayList<Entry<String , String>> (set);
for(Entry<String , String> entry : list ) {
System.out.println(entry.getKey());
System.out.println(entry.getValue());
} "
মানচিত্র থেকে মান পেতে এখানে সাধারণ পদ্ধতি।
public static <T> List<T> ValueListFromMap(HashMap<String, T> map) {
List<T> thingList = new ArrayList<>();
for (Map.Entry<String, T> entry : map.entrySet()) {
thingList.add(entry.getValue());
}
return thingList;
}
HashMap<Integer, List<String>> map = new HashMap<>();
List<String> list = new ArrayList<String>();
list.add("Java");
list.add("Primefaces");
list.add("JSF");
map.put(1,list);
if(map != null){
return new ArrayList<String>((Collection<? extends String>) map.values());
}