জাভা: তালিকা মানচিত্রে রূপান্তর কিভাবে


224

জাভাতে রূপান্তর Listকরার সর্বোত্তম উপায় কী হবে Mapএবং যদি এর থেকে কোনও নির্দিষ্ট সুবিধা থাকে তবে সম্প্রতি আমার একজন সহকর্মীর সাথে আলাপ করেছি।

আমি সর্বোত্তম রূপান্তর পদ্ধতি জানতে চাই এবং যদি কেউ আমাকে গাইড করতে পারে তবে সত্যই প্রশংসা করব।

এই ভাল পদ্ধতির হয়:

List<Object[]> results;
Map<Integer, String> resultsMap = new HashMap<Integer, String>();
for (Object[] o : results) {
    resultsMap.put((Integer) o[0], (String) o[1]);
}

2
সেরা সর্বোত্তম উপায় কি? অপ্টিমাইজেশন নির্দিষ্ট প্যারামিটার (গতি / মেমরি) মাথায় রেখে করা হয়।
ড্যানিয়েল Fath

6
ধারণাগত উপায়ে তালিকা মানচিত্রের চেয়ে পৃথক - মানচিত্রে 'কী, মান' জোড়ের ধারণা রয়েছে, তবে তালিকার মধ্যে নেই List আপনি কীভাবে তালিকা থেকে মানচিত্রে এবং পিছনে রূপান্তর করতে চলেছেন এটি পরিষ্কার নয়।
ভিক্টর সরোকিন

1
@ ড্যানিয়েল: সর্বোত্তমভাবে, আমি বোঝাতে চেয়েছি যে এটির মধ্যে বিভিন্ন উপায়ের মধ্যে সর্বোত্তম উপায়টি কী সমস্ত উপায় সম্পর্কে নিশ্চিত নন এবং তাই তালিকাটিকে মানচিত্রে রূপান্তরিত করার বিভিন্ন উপায় দেখাই ভাল হবে।
রাচেল


উত্তর:


188
List<Item> list;
Map<Key,Item> map = new HashMap<Key,Item>();
for (Item i : list) map.put(i.getKey(),i);

অবশ্যই ধরে নেওয়া যায় যে প্রতিটি আইটেমের একটি getKey()পদ্ধতি রয়েছে যা সঠিক ধরণের চাবি দেয়।


1
আপনি তালিকার অবস্থানে কী করতে পারেন।
জেরেমি

@ জিম: আমার কি getKey()কোনও নির্দিষ্ট পরামিতি সেট করতে হবে?
রাচেল

এছাড়াও মানচিত্রে মানটি কী হবে, আপনি কি উদাহরণ দিয়ে বিস্তারিত বর্ণনা করতে পারেন?
রাচেল

1
@ রাচেল - তালিকার মানটি হল আইটেম এবং কীটি এমন একটি জিনিস যা আইটেমটিকে অনন্য করে তোলে যা আপনার দ্বারা নির্ধারিত হয়। জিমের ব্যবহার getKey()ছিল নির্বিচারে।
জেরেমি

1
আপনি আকারটি আগেই জানেন তাই আপনি ম্যাপ <কী, আইটেম> মানচিত্র = নতুন হ্যাশম্যাপ <কী, আইটেম> (list.size ()) করতে পারেন;
ভেক্টর রোমেরো

316

সঙ্গে , আপনি স্ট্রিম এবং Collectorsক্লাস ব্যবহার করে এক লাইনে এটি করতে সক্ষম হবেন ।

Map<String, Item> map = 
    list.stream().collect(Collectors.toMap(Item::getKey, item -> item));

সংক্ষিপ্ত ডেমো:

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class Test{
    public static void main (String [] args){
        List<Item> list = IntStream.rangeClosed(1, 4)
                                   .mapToObj(Item::new)
                                   .collect(Collectors.toList()); //[Item [i=1], Item [i=2], Item [i=3], Item [i=4]]

        Map<String, Item> map = 
            list.stream().collect(Collectors.toMap(Item::getKey, item -> item));

        map.forEach((k, v) -> System.out.println(k + " => " + v));
    }
}
class Item {

    private final int i;

    public Item(int i){
        this.i = i;
    }

    public String getKey(){
        return "Key-"+i;
    }

    @Override
    public String toString() {
        return "Item [i=" + i + "]";
    }
}

আউটপুট:

Key-1 => Item [i=1]
Key-2 => Item [i=2]
Key-3 => Item [i=3]
Key-4 => Item [i=4]

মন্তব্যে উল্লিখিত হিসাবে, আপনি Function.identity()পরিবর্তে ব্যবহার করতে পারেন item -> item, যদিও আমি i -> iবরং স্পষ্ট মনে করি।

এবং সম্পূর্ণ নোট হিসাবে আপনি যদি বাইনারি অপারেটর ব্যবহার করতে পারেন তবে যদি আপনার ফাংশনটি বাইজেক্টভ না থাকে। উদাহরণস্বরূপ আসুন এই Listএবং ম্যাপিং ফাংশনটি বিবেচনা করুন যে কোনও পূর্ব মানের জন্য, এটির ফলাফলটি গণনা করুন 3:

List<Integer> intList = Arrays.asList(1, 2, 3, 4, 5, 6);
Map<String, Integer> map = 
    intList.stream().collect(toMap(i -> String.valueOf(i % 3), i -> i));

এই কোডটি চালানোর সময়, আপনি এই বলে একটি ত্রুটি পাবেন java.lang.IllegalStateException: Duplicate key 1। এটি হ'ল কারণ 1% 3 4% 3 এর সমান এবং তাই কী ম্যাপিংয়ের ক্রিয়াকলাপটি দেওয়া হওয়ায় একই মূল মান রয়েছে। এই ক্ষেত্রে আপনি মার্জ অপারেটর সরবরাহ করতে পারেন।

মানগুলির যোগফলের একটি এখানে; (i1, i2) -> i1 + i2;যে পদ্ধতি রেফারেন্স সঙ্গে প্রতিস্থাপন করা যেতে পারে Integer::sum

Map<String, Integer> map = 
    intList.stream().collect(toMap(i -> String.valueOf(i % 3), 
                                   i -> i, 
                                   Integer::sum));

যা এখন ফলাফল:

0 => 9 (i.e 3 + 6)
1 => 5 (i.e 1 + 4)
2 => 7 (i.e 2 + 5)

আশা করি এটা সাহায্য করবে! :)


19
এর Function.identity()পরিবর্তে আরও ভাল ব্যবহার করুনitem -> item
এমমানুয়েল টাউজারি

1
@ এমমানুয়েলটজরি ভাল, Function.identity()ফিরে এসেছে t -> t;
অ্যালেক্সিস সি

2
অবশ্যই, উভয় কাজ। আমার ধারণা এটি স্বাদের বিষয় of আমি ফাংশন.অভিডেনটিটি () আরও তত্ক্ষণাত সনাক্তযোগ্য find
এমমানুয়েল টাজারি

ওপি কোনও পোজো, কেবল স্ট্রিং এবং পূর্ণসংখ্যাকে হ্যান্ডেল করে না যার উপর আপনি কল করতে পারবেন না ::getKey
phil294

@ ব্লাউহিরন আমি জানি, আমার উদাহরণটি ঠিক নীচে কাস্টম শ্রেণীর উপর ভিত্তি করে। মানগুলি থেকে আপনার কী উত্পন্ন করতে আপনি যে কোনও ফাংশন ব্যবহার করতে পারেন।
অ্যালেক্সিস সি

115

এই প্রশ্নটিকে সদৃশ হিসাবে বন্ধ না করা ক্ষেত্রে সঠিক উত্তরটি হ'ল গুগল সংগ্রহগুলি ব্যবহার করা :

Map<String,Role> mappedRoles = Maps.uniqueIndex(yourList, new Function<Role,String>() {
  public String apply(Role from) {
    return from.getName(); // or something else
  }});

17
এটি শীর্ষে থাকা উচিত
মার্টিন অ্যান্ডারসন

6
" পেয়ারাতে পুরানো, অবহেলিত গুগল কালেকশন লাইব্রেরির কঠোরভাবে সামঞ্জস্যপূর্ণ সুপারসেট রয়েছে You আপনার সেই লাইব্রেরিটি আর ব্যবহার করা উচিত নয় " "একটি আপডেটের প্রয়োজন হতে পারে।
ক্ষুদ্র

3
এই জাতীয় কোনও সাধারণ ক্রিয়াকলাপের জন্য বাহ্যিক গ্রন্থাগারের ব্যবহার ওভারকিল। এটি বা খুব দুর্বল স্ট্যান্ডার্ড লাইব্রেরির একটি চিহ্ন। এই ক্ষেত্রে @ জিম-গ্যারিসনের উত্তর পুরোপুরি যুক্তিসঙ্গত। এটি দুঃখজনক যে জাভাতে "মানচিত্র" এবং "হ্রাস" এর মতো সহায়ক পদ্ধতি নেই তবে সম্পূর্ণ প্রয়োজনীয় নয়।
লিনাক্সডান

2
এটি পেয়ারা ব্যবহার করে। দুর্ভাগ্যক্রমে পেয়ারা অ্যান্ড্রয়েডে দুর্দান্ত ধীর, সুতরাং এই সমাধানটি অ্যান্ড্রয়েড প্রকল্পে ব্যবহার করা উচিত নয়।
ইগোরগানাপলস্কি

তালিকার আইটেমটির ভূমিকা নকল করা থাকলে উপরের কোডটি ব্যতিক্রম ছুঁড়ে ফেলবে,
জুনচেন লিউ

17

জাভা 8 ব্যবহার করে আপনি নিম্নলিখিতগুলি করতে পারেন:

Map<Key, Value> result= results
                       .stream()
                       .collect(Collectors.toMap(Value::getName,Function.identity()));

Value আপনি যে কোনও অবজেক্ট ব্যবহার করতে পারেন।


16

জাভা 8-র থেকে, সংগ্রাহককে ব্যবহার করে @ ZouZou এর উত্তরCollectors.toMap অবশ্যই এই সমস্যাটি সমাধান করার মূর্তিযুক্ত উপায়।

এবং এটি যেমন একটি সাধারণ কাজ, আমরা এটি একটি স্ট্যাটিক ইউটিলিটি করতে পারি।

এইভাবে সমাধানটি সত্যই একটি ওলাইনারে পরিণত হয়।

/**
 * Returns a map where each entry is an item of {@code list} mapped by the
 * key produced by applying {@code mapper} to the item.
 *
 * @param list the list to map
 * @param mapper the function to produce the key from a list item
 * @return the resulting map
 * @throws IllegalStateException on duplicate key
 */
public static <K, T> Map<K, T> toMapBy(List<T> list,
        Function<? super T, ? extends K> mapper) {
    return list.stream().collect(Collectors.toMap(mapper, Function.identity()));
}

এবং আপনি এখানে এটি কীভাবে ব্যবহার করবেন তা এখানে List<Student>:

Map<Long, Student> studentsById = toMapBy(students, Student::getId);

এই পদ্ধতির ধরণের পরামিতিগুলির আলোচনার জন্য আমার ফলো-আপ প্রশ্নটি দেখুন
ফ্লাইট

এটি ক্ষেত্রে একটি ব্যতিক্রম ছুঁড়ে ফেলবে, সেখানে নকল কী রয়েছে। ষষ্ঠ মত: থ্রেড ব্যতিক্রম "প্রধান" java.lang.IllegalStateException: সদৃশ কী .... বিস্তারিত জানার জন্য দেখুন: codecramp.com/java-8-streams-api-convert-list-map
EMM

@ ইএমএম অবশ্যই জাভাদোকের উদ্দেশ্যে এবং ডকুমেন্টেড হিসাবে।
16 নভেম্বর

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

10

Listএবং Mapধারণাগতভাবে পৃথক। এ Listহ'ল অর্ডার করা আইটেমের সংগ্রহ। আইটেমগুলি সদৃশ থাকতে পারে, এবং একটি আইটেম একটি অনন্য সনাক্তকারী (কী) এর কোন ধারণা নাও থাকতে পারে। একজনMap চাবি ম্যাপ মানে আছে। প্রতিটি কী কেবল একটি মানকে নির্দেশ করতে পারে।

সুতরাং, আপনার Listআইটেমগুলির উপর নির্ভর করে এটি এ এ রূপান্তর করা বা নাও সম্ভব Map। আপনার Listআইটেমের কোন নকল আছে? প্রতিটি আইটেমের একটি অনন্য কী আছে? যদি তা হয় তবে এগুলিতে একটি রাখা সম্ভব Map


10

অ্যালেক্সিস ইতিমধ্যে পদ্ধতি ব্যবহার করে জাভা 8 এ একটি উত্তর পোস্ট করেছেন toMap(keyMapper, valueMapper)। এই পদ্ধতির প্রয়োগের জন্য ডক হিসাবে :

মানচিত্রের ধরণ, পরিবর্তনশীলতা, সিরিয়ালযোগ্যতা বা থ্রেড-সুরক্ষার কোনও গ্যারান্টি নেই।

সুতরাং আমরা যদি Mapইন্টারফেসের একটি নির্দিষ্ট প্রয়োগে আগ্রহী যেমন উদাহরণস্বরূপ HashMapআমরা তখন অতিরিক্ত লোড ফর্মটি ব্যবহার করতে পারি:

Map<String, Item> map2 =
                itemList.stream().collect(Collectors.toMap(Item::getKey, //key for map
                        Function.identity(),    // value for map
                        (o,n) -> o,             // merge function in case of conflict with keys
                        HashMap::new));         // map factory - we want HashMap and not any Map implementation

যদিও ব্যবহার করা হয় Function.identity()বা i->iজরিমানা তবে এটি সম্পর্কিত উত্তর হিসাবে কিছু মেমরি সংরক্ষণ করার Function.identity()পরিবর্তে মনে হয় ।i -> i


1
মজার বিষয় যে 2019 সালে বিপুল পরিমাণ লোকেরা এখনও বুঝতে পারে না যে তারা ল্যাম্বডা দিয়ে প্রাপ্ত আসল মানচিত্রের বাস্তবায়ন জানেন না! প্রকৃতপক্ষে এটি জাভা 8 টি ল্যাম্বডাসের সাথে আমি কেবল উত্তর পেয়েছি যা আমি উত্পাদন করতে ব্যবহার করব।
পাভলো

কোনও ম্যাপের ধরণ নির্দিষ্ট করে তবে মার্জ ফাংশনটি ব্যবহার না করে সংগ্রহ করার কোনও উপায় আছে কি?
রোজবার্গ লিনহারেস


5

সর্বজনীন পদ্ধতি

public static <K, V> Map<K, V> listAsMap(Collection<V> sourceList, ListToMapConverter<K, V> converter) {
    Map<K, V> newMap = new HashMap<K, V>();
    for (V item : sourceList) {
        newMap.put( converter.getKey(item), item );
    }
    return newMap;
}

public static interface ListToMapConverter<K, V> {
    public K getKey(V item);
}

এটি কিভাবে ব্যবহার করবেন? converterপদ্ধতিতে প্যারামিটার হিসাবে আমার কী পাস করা উচিত ?
ইগোরগানাপলস্কি

4

জাভা -8 ব্যতীত আপনি এক লাইনের কমন্স সংগ্রহ এবং ক্লোজার ক্লাসে এটি করতে সক্ষম হবেন

List<Item> list;
@SuppressWarnings("unchecked")
Map<Key, Item> map  = new HashMap<Key, Item>>(){{
    CollectionUtils.forAllDo(list, new Closure() {
        @Override
        public void execute(Object input) {
            Item item = (Item) input;
            put(i.getKey(), item);
        }
    });
}};

2

আপনি কী অর্জন করতে চান তার উপর নির্ভর করে অনেকগুলি সমাধান মাথায় আসে:

প্রতিটি তালিকার আইটেমটি কী এবং মান

for( Object o : list ) {
    map.put(o,o);
}

তালিকা উপাদানগুলির এগুলি সন্ধান করার জন্য কিছু আছে, সম্ভবত একটি নাম:

for( MyObject o : list ) {
    map.put(o.name,o);
}

তালিকার উপাদানগুলির এগুলি সন্ধান করার জন্য কিছু আছে এবং এগুলি অনন্য বলে কোনও গ্যারান্টি নেই: গুগলস মাল্টিম্যাপগুলি ব্যবহার করুন

for( MyObject o : list ) {
    multimap.put(o.name,o);
}

সমস্ত উপাদানকে একটি কী হিসাবে অবস্থান দেওয়া:

for( int i=0; i<list.size; i++ ) {
    map.put(i,list.get(i));
}

...

এটি আপনি কী অর্জন করতে চান তার উপর নির্ভর করে।

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


তবে আমরা তালিকার এলিমেন্টের অবস্থানটিকে কী হিসাবে বিবেচনা করতে এবং মানকে মানচিত্রে রাখতে পারি, এটি কি ভাল সমাধান?
রাচেল

আফাইক হ্যাঁ! জেডিকেতে কোনও ফাংশন নেই যা এটি স্বয়ংক্রিয়ভাবে হয়, তাই আপনাকে নিজের রোল করতে হবে।
ড্যানিয়েল

জাভা 8 টি স্ট্রিম দিয়ে শেষ সংস্করণটি (মানচিত্র কী হিসাবে অ্যারে সূচক ব্যবহার করে) করা সম্ভব?
phil294

2

ঠিক এই উদ্দেশ্যে আমি একটি ছোট পদ্ধতি লিখেছি। এটি অ্যাপাচি কমন্স থেকে বৈধতা ব্যবহার করে।

এটি বিনামূল্যে নির্দ্বিধায়।

/**
 * Converts a <code>List</code> to a map. One of the methods of the list is called to retrive
 * the value of the key to be used and the object itself from the list entry is used as the
 * objct. An empty <code>Map</code> is returned upon null input.
 * Reflection is used to retrieve the key from the object instance and method name passed in.
 *
 * @param <K> The type of the key to be used in the map
 * @param <V> The type of value to be used in the map and the type of the elements in the
 *            collection
 * @param coll The collection to be converted.
 * @param keyType The class of key
 * @param valueType The class of the value
 * @param keyMethodName The method name to call on each instance in the collection to retrieve
 *            the key
 * @return A map of key to value instances
 * @throws IllegalArgumentException if any of the other paremeters are invalid.
 */
public static <K, V> Map<K, V> asMap(final java.util.Collection<V> coll,
        final Class<K> keyType,
        final Class<V> valueType,
        final String keyMethodName) {

    final HashMap<K, V> map = new HashMap<K, V>();
    Method method = null;

    if (isEmpty(coll)) return map;
    notNull(keyType, Messages.getString(KEY_TYPE_NOT_NULL));
    notNull(valueType, Messages.getString(VALUE_TYPE_NOT_NULL));
    notEmpty(keyMethodName, Messages.getString(KEY_METHOD_NAME_NOT_NULL));

    try {
        // return the Method to invoke to get the key for the map
        method = valueType.getMethod(keyMethodName);
    }
    catch (final NoSuchMethodException e) {
        final String message =
            String.format(
                    Messages.getString(METHOD_NOT_FOUND),
                    keyMethodName,
                    valueType);
        e.fillInStackTrace();
        logger.error(message, e);
        throw new IllegalArgumentException(message, e);
    }
    try {
        for (final V value : coll) {

            Object object;
            object = method.invoke(value);
            @SuppressWarnings("unchecked")
            final K key = (K) object;
            map.put(key, value);
        }
    }
    catch (final Exception e) {
        final String message =
            String.format(
                    Messages.getString(METHOD_CALL_FAILED),
                    method,
                    valueType);
        e.fillInStackTrace();
        logger.error(message, e);
        throw new IllegalArgumentException(message, e);
    }
    return map;
}

2

আপনি জাভা 8 এর স্ট্রিম এপিআই উপার্জন করতে পারেন।

public class ListToMap {

  public static void main(String[] args) {
    List<User> items = Arrays.asList(new User("One"), new User("Two"), new User("Three"));

    Map<String, User> map = createHashMap(items);
    for(String key : map.keySet()) {
      System.out.println(key +" : "+map.get(key));
    }
  }

  public static Map<String, User> createHashMap(List<User> items) {
    Map<String, User> map = items.stream().collect(Collectors.toMap(User::getId, Function.identity()));
    return map;
  }
}

বিস্তারিত জানার জন্য এখানে যান: http://codecramp.com/java-8-streams-api-convert-list-map/


1

একটি জাভা 8 উদাহরণ একটি List<?>বস্তুকে একটিতে রূপান্তর করার জন্য Map<k, v>:

List<Hosting> list = new ArrayList<>();
list.add(new Hosting(1, "liquidweb.com", new Date()));
list.add(new Hosting(2, "linode.com", new Date()));
list.add(new Hosting(3, "digitalocean.com", new Date()));

//example 1
Map<Integer, String> result1 = list.stream().collect(
    Collectors.toMap(Hosting::getId, Hosting::getName));

System.out.println("Result 1 : " + result1);

//example 2
Map<Integer, String> result2 = list.stream().collect(
    Collectors.toMap(x -> x.getId(), x -> x.getName()));

কোডটি অনুলিপি করা হয়েছে:
https://www.mkyong.com/java8/java-8-convert-list-to-map/


1

যেমন ইতিমধ্যে বলেছে, জাভা -8 এ আমাদের সংগ্রাহকগণের সংক্ষিপ্ত সমাধান রয়েছে:

  list.stream().collect(
         groupingBy(Item::getKey)
        )

এবং এছাড়াও, আপনি একাধিক গ্রুপকে দ্বিতীয় প্যারামিটার হিসাবে অন্য একটি গ্রুপিং পদ্ধতিতে পাস করে বাসা বাঁধতে পারেন:

  list.stream().collect(
         groupingBy(Item::getKey, groupingBy(Item::getOtherKey))
        )

এইভাবে, আমাদের একাধিক স্তরের মানচিত্র থাকবে: Map<key, Map<key, List<Item>>>



0

আমি কঙ্গো_ভি এর উত্তর পছন্দ করি তবে আমার মনে হয় এটি খুব জটিল। আমি মনে করি এটি সহজ - সম্ভবত খুব সহজ। যদি ঝোঁক থাকে তবে আপনি স্ট্রিংকে জেনেরিক চিহ্ন দিয়ে প্রতিস্থাপন করতে পারেন এবং এটি কোনও মূল ধরণের জন্য কাজ করতে পারেন।

public static <E> Map<String, E> convertListToMap(Collection<E> sourceList, ListToMapConverterInterface<E> converterInterface) {
    Map<String, E> newMap = new HashMap<String, E>();
    for( E item : sourceList ) {
        newMap.put( converterInterface.getKeyForItem( item ), item );
    }
    return newMap;
}

public interface ListToMapConverterInterface<E> {
    public String getKeyForItem(E item);
}

এর মতো ব্যবহৃত:

        Map<String, PricingPlanAttribute> pricingPlanAttributeMap = convertListToMap( pricingPlanAttributeList,
                new ListToMapConverterInterface<PricingPlanAttribute>() {

                    @Override
                    public String getKeyForItem(PricingPlanAttribute item) {
                        return item.getFullName();
                    }
                } );

0

অ্যাপাচি কমন্স ম্যাপইটিলস.পপুলেটম্যাপ

আপনি যদি জাভা 8 ব্যবহার না করেন এবং কোনও কারণে আপনি স্পষ্ট লুপটি ব্যবহার করতে না চান তবে MapUtils.populateMapঅ্যাপাচি কমন্স থেকে চেষ্টা করুন ।

MapUtils.populateMap

বলুন আপনার Pairs এর একটি তালিকা আছে ।

List<ImmutablePair<String, String>> pairs = ImmutableList.of(
    new ImmutablePair<>("A", "aaa"),
    new ImmutablePair<>("B", "bbb")
);

এবং আপনি এখন অবজেক্টের Pairচাবির মানচিত্র চান Pair

Map<String, Pair<String, String>> map = new HashMap<>();
MapUtils.populateMap(map, pairs, new Transformer<Pair<String, String>, String>() {

  @Override
  public String transform(Pair<String, String> input) {
    return input.getKey();
  }
});

System.out.println(map);

আউটপুট দেয়:

{A=(A,aaa), B=(B,bbb)}

বলা হচ্ছে যে, একটি forলুপ বোঝা সম্ভবত সহজ। (এটি নীচে একই আউটপুট দেয়):

Map<String, Pair<String, String>> map = new HashMap<>();
for (Pair<String, String> pair : pairs) {
  map.put(pair.getKey(), pair);
}
System.out.println(map);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.