সবচেয়ে ভালো উপায় একটি রূপান্তর করতে কি 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একটি নতুন তৈরি করে প্রাপ্ত করা যাবে ArrayListA থেকে Setফিরিয়ে দেওয়া Map.keySetপদ্ধতি:
List<String> list = new ArrayList<String>(m.keySet());
যদিও একটি হিসাবে মানগুলি পদ্ধতিটি দ্বারা ফেরত থেকে একটি Listনতুন তৈরি করা যায় :ArrayListCollectionMap.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());
}