সংগ্রহের ক্ষেত্রে Iteable রূপান্তর করার সহজ উপায়


423

আমার অ্যাপ্লিকেশনটিতে আমি তৃতীয় পক্ষের গ্রন্থাগার ব্যবহার করি (মঙ্গোডিবির জন্য স্প্রিং ডেটা হুবহু হতে)।

এই লাইব্রেরির পদ্ধতিগুলি ফিরে আসবে Iterable<T>, যখন আমার কোডের বাকী অংশ প্রত্যাশা করে Collection<T>

কোথাও এমন কোনও ইউটিলিটি পদ্ধতি রয়েছে যা আমাকে দ্রুত অন্যটিতে রূপান্তর করতে দেয়? আমি এই foreachজাতীয় কোনও সাধারণ জিনিসের জন্য আমার কোডে একগুচ্ছ লুপ তৈরি করা এড়াতে চাই ।


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

" যাইহোক সংগ্রহের পুনরাবৃত্তি করতে বাধ্য ", - না, তা নয়। বিস্তারিত জানার জন্য আমার উত্তর দেখুন।
আইয়ুব

3
আপনার নির্দিষ্ট ব্যবহারের ক্ষেত্রে, আপনি সংগ্রহের পরিবর্তে <T> / তালিকা <T> / সেট <T> (প্রয়োজন হিসাবে) অপেক্ষাকৃত <T>
কেভিন ভ্যান ডাইক

উত্তর:


387

সঙ্গে পেয়ারা আপনি ব্যবহার করতে পারেন Lists.newArrayList (Iterable) বা Sets.newHashSet (Iterable) অন্যান্য অনুরূপ পদ্ধতি মধ্যে। এটি অবশ্যই সমস্ত উপাদানকে মেমরিতে অনুলিপি করবে। যদি এটি গ্রহণযোগ্য নয়, আমি আপনার কোড যে এই কর্তব্য সাথে কাজে নিতে মনে Iterableবদলে Collection। পেয়ারা Collectionকোনও Iterable(যেমন Iterables.isEmpty(Iterable)বা Iterables.contains(Iterable, Object)) ব্যবহার করে করতে পারেন এমন কাজগুলি করার জন্য সুবিধাজনক পদ্ধতিগুলি সরবরাহ করার ক্ষেত্রে ঘটে তবে কার্য সম্পাদনের বিষয়টি আরও স্পষ্ট।


1
এটি সরাসরি সমস্ত উপাদানগুলির মাধ্যমে পুনরাবৃত্তি করে? অর্থাৎ, Lists.newArrayList(Iterable).clear()লিনিয়ার বা ধ্রুবক সময় অপারেশন?
আইয়ুব

2
@ আইউব: এটি পুনরাবৃত্তিযোগ্যদের একটি অনুলিপি তৈরি করে। এটি নির্দিষ্ট করা হয়নি যে কোনও দৃশ্য পছন্দসই ছিল এবং এটি দেওয়া যে বেশিরভাগ পদ্ধতির Collectionকোনও দৃষ্টিভঙ্গির জন্য প্রয়োগ করা যায় না Iterableবা দক্ষ হবে না, এটি করার জন্য এটি আমার পক্ষে খুব একটা বোঝায় না।
কলিনড

@ কলিনড আমি যদি একটি মতামত চাই? আসলে, আমি যা চাই তা হল একটি ভিউ যা অন্য উপাদানটির সাথে উত্স সংগ্রহ সংযোজনের ফলাফল। আমি ব্যবহার করতে পারেন Iterables.concat()কিন্তু যে একটি দেয় Iterable, না একটি Collection:(
হেন্ডি উত্থাপন Irawan

1
এটি আমার প্রশ্ন: স্ট্যাকওভারফ্লো / প্রশ্ন / 4896662/… । দুর্ভাগ্যক্রমে যে সহজ উত্তরটি সমস্যার সমাধান করে না তা হ'ল ব্যবহার করে Iterables.concat()। দীর্ঘতর উত্তর দেয় Collection... আমি ভাবছি কেন এটি আরও সাধারণভাবে সমর্থন করে না?
হেন্দি ইরওয়ান

365

কোনও অতিরিক্ত libs ব্যবহার না করে জেডিকে 8+ তে:

Iterator<T> source = ...;
List<T> target = new ArrayList<>();
source.forEachRemaining(target::add);

সম্পাদনা: উপরে এক জন্য Iterator। আপনি যদি লেনদেন করছেন Iterable,

iterable.forEach(target::add);

86
বাiterable.forEach(target::add);
সেফালাপড

92

আপনি এটির জন্য নিজের ইউটিলিটি পদ্ধতিও লিখতে পারেন:

public static <E> Collection<E> makeCollection(Iterable<E> iter) {
    Collection<E> list = new ArrayList<E>();
    for (E item : iter) {
        list.add(item);
    }
    return list;
}

33
+1 টি যদি থেকে যাচ্ছে Iterableকরার Collectionশুধুমাত্র উদ্বেগের বিষয়, আমি একটি বড় 3rd পার্টি সংগ্রহ-গ্রন্থাগার আমদানি উপর এই পদ্ধতির পেশ করবো।
আইয়ুব

2
ফাংশন কোডের 4 টি লাইন 2 এমবি সংকলিত লাইব্রেরি কোডের চেয়ে বেশি পছন্দনীয় যার জন্য এটির 99% অব্যবহৃত হয়। আরও একটি খরচ আছে: লাইসেন্সিং জটিলতা। অ্যাপাচি ২.০ লাইসেন্সটি নমনীয়, তবে কিছু ক্লান্তিকর আদেশ ছাড়াই নয়। আদর্শভাবে আমরা দেখতে পাবো যে এই কয়েকটি সাধারণ নিদর্শন সরাসরি জাভা রানটাইম লাইব্রেরিতে সংহত হয়েছে।
জোনাথন নিউফিল্ড

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

@ জোনাথননিউফেল্ড বা কেন কেবল এগিয়ে গিয়ে একটি অ্যারেলিস্ট <T> ফিরিয়ে নেই?
জুয়ান

5
@Juan কারণ খুব নয় কঠিন । একটি অ্যারেলিস্ট বাস্তবায়নের বিশদটি বহন করে যা সম্ভবত অপ্রয়োজনীয় (YAGNI), যা একক দায়িত্ব এবং নির্ভরতা বিপরীত নীতি লঙ্ঘন করে। আমি এটিকে তালিকায় রেখে দেব কারণ এটি সম্পূর্ণ সলিড থাকা অবস্থায় সংগ্রহের তুলনায় কিছুটা বেশি প্রকাশ করে। আপনি যদি ইনভোকিভার্টিওয়াল ওভারকোড INVOKEINTERFACE এর JVM পারফরম্যান্স প্রভাব সম্পর্কে উদ্বিগ্ন হন, তবে প্রচুর মানদণ্ড প্রকাশ করবে যে এটি ঘুম হারানোর পক্ষে উপযুক্ত নয়।
জোনাথন নিউফিল্ড

80

জাভা 8 ব্যবহার করে সংক্ষিপ্ত সমাধান java.util.stream:

public static <T> List<T> toList(final Iterable<T> iterable) {
    return StreamSupport.stream(iterable.spliterator(), false)
                        .collect(Collectors.toList());
}

1
এই পদ্ধতির উপায় খুব ধীর সাথে তুলনা করা হয় IteratorUtilsথেকেcommons-collections
অ্যালেক্স Burdusel

3
কত ধীর? IteratorUtils.toList()নতুন তৈরি তালিকায় উপাদানগুলিকে একে একে যুক্ত করতে পূর্ব জাভা 5 ফ্যাশনে পুনরাবৃত্তকারী ব্যবহার করে। সহজ এবং সম্ভবত দ্রুততম, তবে আপনার বাইনারিটিতে 734 কেবি যুক্ত করেছে এবং আপনি যদি এই পদ্ধতিটিকে সেরা বলে মনে করেন তবে আপনি নিজেই এটি করতে পারেন।
xehpuk

8
আমি একটি আদিম মানদণ্ডটি শেষ করেছি যে কখনও কখনও প্রথমটি দ্রুত হয়, আবার কখনও কখনও দ্বিতীয়টিও দ্রুত হয়। আমাদের আপনার মানদণ্ড প্রদর্শন করুন।
xehpuk

এই প্রোবটি নতুন স্বীকৃত উত্তর হতে পারে - অতিরিক্ত লিবস (পেয়ারা এর মতো) এড়ানো ভাল।
java-addict301

48

IteratorUtilsথেকে commons-collectionsসহায়তা করতে পারে (যদিও তারা সর্বশেষ স্থিতিশীল সংস্করণ 3.2.1 এ জেনেরিক সমর্থন করে না):

@SuppressWarnings("unchecked")
Collection<Type> list = IteratorUtils.toList(iterable.iterator());

সংস্করণ 4.0 (যা এই মুহুর্তে এসএনএপশটটিতে রয়েছে) জেনেরিকগুলি সমর্থন করে এবং আপনি এর থেকে মুক্তি পেতে পারেন @SuppressWarnings

আপডেট: ক্যাক্টোIterableAsList থেকে পরীক্ষা করুন ।


5
তবে এটির জন্য একজন আইট্রেটার প্রয়োজন, কোনও আইট্রেবল নয়
58-

5
@ হিটউইন, আমি এটি পাই না - আইটেবল একটি আইট্রেটর সরবরাহ করে (উত্তরে বিস্তারিত হিসাবে) - সমস্যা কী?
টম

আমি কী ভাবছিলাম তা জানেন না ^^ U
hithwen

2
৪.১ যেহেতু এছাড়াও রয়েছে IterableUtils.toList(Iterable)যা একটি সুবিধা পদ্ধতি এবং IteratorUtilsহুডের নীচে ব্যবহার করে তবে এটি নাল-নিরাপদ (বিপরীত IteratorUtils.toList)।
ইয়ুরি এন।

21

সংগ্রহের ব্যবহারগুলি থেকে :

List<T> targetCollection = new ArrayList<T>();
CollectionUtils.addAll(targetCollection, iterable.iterator())

এই ইউটিলিটি পদ্ধতির সম্পূর্ণ উত্স এখানে:

public static <T> void addAll(Collection<T> collection, Iterator<T> iterator) {
    while (iterator.hasNext()) {
        collection.add(iterator.next());
    }
}

এটি সরাসরি সমস্ত উপাদানগুলির মাধ্যমে পুনরাবৃত্তি করে? অর্থাৎ, Lists.newArrayList(someIterable).clear()লিনিয়ার বা ধ্রুবক সময় অপারেশন?
আইয়ুব

আমি addAllনামের উত্স হিসাবে সোর্স কোড যুক্ত করেছি , এটি একের পর এক পুনরাবৃত্তির মানগুলি অনুলিপি করে; এটি দেখার চেয়ে একটি অনুলিপি তৈরি করে।
টমাসজ নুরকিউইচজ

কী আফসোসের যে CollectionUtilsঅতিরিক্ত লাইনে সংগ্রহটি তৈরির উপায় এড়ানোর কোনও পদ্ধতি নেই ।
কার্ল রিখটার


14

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

for (piece : sthIterable){
..........
}

এতে প্রসারিত হবে:

Iterator it = sthIterable.iterator();
while (it.hasNext()){
    piece = it.next();
..........
}

it.hasNext () কখনই মিথ্যা ফিরতে হবে না। সুতরাং সাধারণ ক্ষেত্রে আপনি প্রত্যাখ্যান করতে পারবেন না প্রতিটি প্রতিচ্ছবি সংগ্রহের মধ্যে রূপান্তর করতে সক্ষম। উদাহরণস্বরূপ আপনি সমস্ত ধনাত্মক প্রাকৃতিক সংখ্যার উপরে পুনরাবৃত্তি করতে পারেন, চক্রের সাথে এমন কোনও কিছু নিয়ে পুনরাবৃত্তি করতে পারেন যা বার বার একই ফলাফল তৈরি করে etc.

নইলে: অত্রির উত্তর বেশ ভাল।


1
অনুশীলন / আসল কোডে কেউ কি আসলেই এমন কোনও পরিমার্জনীয় স্থান পেরিয়ে এসেছিলেন যা অসীম কিছুটির (যা উত্তরে দেওয়া প্রাকৃতিক সংখ্যার উদাহরণের মতো) পুনরাবৃত্তি করে? আমি ভাবব যে এইরকম একটি পরিশ্রমী প্রচুর জায়গায় ব্যথা এবং হতাশা সৃষ্টি করবে ... :)
ডেভিড

2
@ ডেভিড যদিও আমি আমার প্রোডাকশন কোডের কোনওটিতেই অসীম আইট্রেটারকে বিশেষভাবে নির্দেশ করতে পারি না, তবে আমি তাদের কেসগুলির ক্ষেত্রে ভাবতে পারি they একটি ভিডিও গেমের এমন একটি দক্ষতা থাকতে পারে যা উপরের উত্তরটি পরামর্শ দেয় এমন চক্রীয় প্যাটার্নে আইটেম তৈরি করে। যদিও আমি কোনও অসীম পুনরাবৃত্তির মুখোমুখি হই নি, অবশ্যই আমি পুনরাবৃত্তকারীদের মুখোমুখি হয়েছি যেখানে মেমরিটি সত্যই উদ্বেগ is আমার ডিস্কের ফাইলগুলির উপরে পুনরাবৃত্তি রয়েছে। আমার কাছে যদি পূর্ণ 1 টিবি ডিস্ক এবং 4 জিবি র‌্যাম থাকে তবে আমি আমার পুনরুক্তিটিকে একটি সংগ্রহে রূপান্তর করতে খুব সহজেই স্মৃতি ছেড়ে চলে যেতে পারি।
রেডিক্ল্যাডওয়ার্ড 101

14

আমি FluentIterable.from(myIterable).toList()অনেক ব্যবহার করি ।


9
এটিও পেয়ারা থেকে আসা উচিত।
ভাদজিম

অথবা org.apache.commons.collections4 থেকে। তারপরে এটি ফ্লুয়েটআইটিরেবল.ওফ (মাই আইটেবল) to টু লিস্ট ()
এটি

9

এটি আপনার প্রশ্নের উত্তর নয় তবে আমি বিশ্বাস করি এটিই আপনার সমস্যার সমাধান। ইন্টারফেসটিতে org.springframework.data.repository.CrudRepositoryআসলে এমন পদ্ধতি রয়েছে যা ফিরে আসে java.lang.Iterableতবে আপনার এই ইন্টারফেসটি ব্যবহার করা উচিত নয়। পরিবর্তে আপনার ক্ষেত্রে সাব ইন্টারফেস ব্যবহার করুন org.springframework.data.mongodb.repository.MongoRepository। এই ইন্টারফেসের এমন পদ্ধতি রয়েছে যা টাইপের অবজেক্টগুলি ফেরত দেয় java.util.List


2
আপনার কোডটি একটি কংক্রিট বাস্তবায়নের সাথে আবদ্ধ না করার জন্য জেনেরিক ক্রুডেপোসিটোরি ব্যবহার করে আমি প্রচার করব।
স্ট্যানলিক

7

আমি উপলব্ধ থাকলে বিদ্যমান সংগ্রহটি কাস্ট করতে আমার কাস্টম ইউটিলিটিটি ব্যবহার করি।

প্রধান:

public static <T> Collection<T> toCollection(Iterable<T> iterable) {
    if (iterable instanceof Collection) {
        return (Collection<T>) iterable;
    } else {
        return Lists.newArrayList(iterable);
    }
}

আদর্শভাবে উপরোক্তগুলি ImmutableList ব্যবহার করবে, তবে Immutable Colલેક્શન নালগুলিকে অনুমতি দেয় না যা অনাকাঙ্ক্ষিত ফলাফল প্রদান করতে পারে।

পরীক্ষা:

@Test
public void testToCollectionAlreadyCollection() {
    ArrayList<String> list = Lists.newArrayList(FIRST, MIDDLE, LAST);
    assertSame("no need to change, just cast", list, toCollection(list));
}

@Test
public void testIterableToCollection() {
    final ArrayList<String> expected = Lists.newArrayList(FIRST, null, MIDDLE, LAST);

    Collection<String> collection = toCollection(new Iterable<String>() {
        @Override
        public Iterator<String> iterator() {
            return expected.iterator();
        }
    });
    assertNotSame("a new list must have been created", expected, collection);
    assertTrue(expected + " != " + collection, CollectionUtils.isEqualCollection(expected, collection));
}

আমি সংগ্রহের সমস্ত উপ-প্রকারের জন্য অনুরূপ ইউটিলিটিগুলি প্রয়োগ করি (সেট, তালিকা, ইত্যাদি)। আমি ভাবতাম এগুলি ইতিমধ্যে পেয়ারা হয়ে উঠবে, তবে আমি এটি পাইনি।


1
আপনার বছরের পুরানো উত্তর হ'ল প্রচুর মতামত এবং মন্তব্য আকর্ষণ করে এমন একটি নতুন প্রশ্নের স্ট্যাকওভারফ্লো . com/ প্রশ্নস / 25২7070০৫34৪/২ এর ভিত্তি ।
পল বোডিংটন

6

যত তাড়াতাড়ি আপনি কল contains, containsAll, equals, hashCode, remove, retainAll, sizeবাtoArray , আপনি যাহাই হউক না কেন উপাদানের তর্ক আছে চাই।

আপনি যদি মাঝে মাঝে কেবল কল করার পদ্ধতিগুলি যেমন isEmptyবা clearআমি মনে করি আপনি আলস্যভাবে সংগ্রহ তৈরির মাধ্যমে আরও ভাল হন। আপনি উদাহরণস্বরূপ হতে পারেArrayList পূর্ববর্তী পুনরাবৃত্ত উপাদানগুলি সংরক্ষণ করার জন্য ।

আমি কোনও লাইব্রেরিতে এ জাতীয় কোনও ক্লাস সম্পর্কে জানি না, তবে এটি লেখার জন্য মোটামুটি সহজ অনুশীলন হওয়া উচিত।



6

জাভা 8 এ আপনি এটি থেকে সমস্ত উপাদান যুক্ত Iterableকরতে Collectionএবং এটি ফেরত দিতে এটি করতে পারেন:

public static <T> Collection<T> iterableToCollection(Iterable<T> iterable) {
  Collection<T> collection = new ArrayList<>();
  iterable.forEach(collection::add);
  return collection;
}

@ আফ্রি উত্তর দ্বারা অনুপ্রাণিত।


5

যেহেতু আরএক্সজাভা একটি হাতুড়ি এবং এই কিন্ডা পেরেকের মতো দেখাচ্ছে তাই আপনি এটি করতে পারেন

Observable.from(iterable).toList().toBlocking().single();

23
সম্ভবত jquery জড়িত থাকার কিছু উপায় আছে?
দিমিত্রি মিনকভস্কি

3
RxJava এ নাল আইটেম থাকলে এটি ক্র্যাশ হয়ে যায়। এটা না?
এমবিএইচ

আমি বিশ্বাস করি আরএক্সজেভা 2 নਾਲ আইটেমগুলিকে অনুমতি দেয় না, আরএক্সজাভাতে ভাল হওয়া উচিত।
দারিয়াসএল

4

জাভা 8-তে এটি করার দুর্দান্ত উপায়ের জন্য এখানে একটি এসএসসিসিই রয়েছে

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class IterableToCollection {
    public interface CollectionFactory <T, U extends Collection<T>> {
        U createCollection();
    }

    public static <T, U extends Collection<T>> U collect(Iterable<T> iterable, CollectionFactory<T, U> factory) {
        U collection = factory.createCollection();
        iterable.forEach(collection::add);
        return collection;
    }

    public static void main(String[] args) {
        Iterable<Integer> iterable = IntStream.range(0, 5).boxed().collect(Collectors.toList());
        ArrayList<Integer> arrayList = collect(iterable, ArrayList::new);
        HashSet<Integer> hashSet = collect(iterable, HashSet::new);
        LinkedList<Integer> linkedList = collect(iterable, LinkedList::new);
    }
}

2

দুটি মন্তব্য

  1. ফোরচ লুপটি ব্যবহারের জন্য আইটেবলকে কালেকশনে রূপান্তরিত করার দরকার নেই - আইটেবল এই জাতীয় লুপটিতে সরাসরি ব্যবহার করা যেতে পারে, কোনও সিন্ট্যাক্টিকাল পার্থক্য নেই, তাই মূল প্রশ্নটি কেন মোটেই জিজ্ঞাসা করা হয়েছিল তা আমি খুব কমই বুঝতে পারি।
  2. সংগ্রহের ক্ষেত্রে আইটেবলকে রূপান্তর করার প্রস্তাবিত উপায়টি অনিরাপদ (একইভাবে কালেক্টিউটিলের সাথে সম্পর্কিত) - পরবর্তী () পদ্ধতিতে পরবর্তী কলগুলি বিভিন্ন বস্তুর উদাহরণ ফেরত দেওয়ার কোনও গ্যারান্টি নেই। তদুপরি, এই উদ্বেগটি খাঁটি তাত্ত্বিক নয়। উদাহরণস্বরূপ হ্যাডোপ রেডুকারের একটি হ্রাস পদ্ধতিতে মানগুলি পাস করতে ব্যবহৃত অপরিবর্তনীয় বাস্তবায়ন সর্বদা বিভিন্ন ক্ষেত্রের মান সহ একই মান উদাহরণটি প্রদান করে। সুতরাং আপনি যদি উপরে (বা কালেকশনUtils.addAll (আইট্রেটার)) থেকে মেক কালেকশন প্রয়োগ করেন তবে আপনি সমস্ত অভিন্ন উপাদান সহ একটি সংগ্রহ শেষ করবেন।


1

কোনও নির্ভরতা ছাড়াই আমি একটি সাধারণ একটি লাইন সমাধান দেখতে পাইনি । আমি সহজ ব্যবহার

List<Users> list;
Iterable<IterableUsers> users = getUsers();

// one line solution
list = StreamSupport.stream(users.spliterator(), true).collect(Collectors.toList());

1

একটি পাওয়ার চেষ্টা করার সময় আমি একই অবস্থা জুড়ে এসেছিল Listএর Projectগুলি বদলে ডিফল্ট Iterable<T> findAll()ঘোষণা CrudRepositoryইন্টারফেস। সুতরাং, আমার ProjectRepositoryইন্টারফেসে (যা থেকে প্রসারিত CrudRepository), আমি কেবল পরিবর্তে এর পরিবর্তে findAll()পদ্ধতিটি ঘোষণা করেছিলাম ।List<Project>Iterable<Project>

package com.example.projectmanagement.dao;

import com.example.projectmanagement.entities.Project;
import org.springframework.data.repository.CrudRepository;
import java.util.List;

public interface ProjectRepository extends CrudRepository<Project, Long> {

    @Override
    List<Project> findAll();
}

রূপান্তর যুক্তি বা বাহ্যিক গ্রন্থাগার ব্যবহার না করেই এটি আমার কাছে সহজ সমাধান।


0

আপনি Elpipse সংগ্রহ কারখানাগুলি ব্যবহার করতে পারেন :

Iterable<String> iterable = Arrays.asList("1", "2", "3");

MutableList<String> list = Lists.mutable.withAll(iterable);
MutableSet<String> set = Sets.mutable.withAll(iterable);
MutableSortedSet<String> sortedSet = SortedSets.mutable.withAll(iterable);
MutableBag<String> bag = Bags.mutable.withAll(iterable);
MutableSortedBag<String> sortedBag = SortedBags.mutable.withAll(iterable);

এছাড়াও আপনি রূপান্তর করতে পারেন Iterableএকটি থেকে LazyIterableএবং রূপান্তরকারী পদ্ধতি বা অন্যান্য উপলব্ধ প্রাপ্তিসাধ্য API গুলি ব্যবহারের।

Iterable<String> iterable = Arrays.asList("1", "2", "3");
LazyIterable<String> lazy = LazyIterate.adapt(iterable);

MutableList<String> list = lazy.toList();
MutableSet<String> set = lazy.toSet();
MutableSortedSet<String> sortedSet = lazy.toSortedSet();
MutableBag<String> bag = lazy.toBag();
MutableSortedBag<String> sortedBag = lazy.toSortedBag();

উপরোক্ত সকল Mutableপ্রকারের প্রসারিত হয় java.util.Collection

দ্রষ্টব্য: আমি গ্রহগ্রাহ সংগ্রহের প্রতিশ্রুতিবদ্ধ।

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