আমি অন্তর্নির্মিত কিছুই খুঁজে পাচ্ছি না ... তবে এক্সপ্যানডোমেটা ক্লাস ব্যবহার করে আমি এটি করতে পারি:
ArrayList.metaClass.collectMap = {Closure callback->
def map = [:]
delegate.each {
def r = callback.call(it)
map[r[0]] = r[1]
}
return map
}
এটি সমস্ত অ্যারেলিস্টগুলিতে কালেক্টম্যাপ পদ্ধতি যুক্ত করে ... আমি নিশ্চিত না কেন এটি তালিকা বা সংগ্রহের সাথে যুক্ত করা কার্যকর হয়নি .. আমার ধারণা এটি অন্য প্রশ্নের জন্য ... তবে এখন আমি এটি করতে পারি ...
assert ["foo":"oof", "42":"24", "bar":"rab"] ==
["foo", "42", "bar"].collectMap { return [it, it.reverse()] }
এক বন্ধ হয়ে তালিকা থেকে গণনা করা মানচিত্রের ... ঠিক আমি যা খুঁজছিলাম।
সম্পাদনা করুন: আমি ইন্টারফেসের তালিকা এবং সংগ্রহের জন্য পদ্ধতিটি যুক্ত করতে না পারার কারণ হ'ল আমি এটি করি নি:
List.metaClass.enableGlobally()
এই পদ্ধতির কল করার পরে, আপনি ইন্টারফেসগুলিতে পদ্ধতিগুলি যুক্ত করতে পারেন .. যার অর্থ এই যে আমার কালেক্টম্যাপ পদ্ধতিটি এই জাতীয় রেঞ্জগুলিতে কাজ করবে:
(0..2).collectMap{[it, it*2]}
যা মানচিত্র দেয়: [0: 0, 1: 2, 2: 4]