আমি উপলব্ধ থাকলে বিদ্যমান সংগ্রহটি কাস্ট করতে আমার কাস্টম ইউটিলিটিটি ব্যবহার করি।
প্রধান:
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));
}
আমি সংগ্রহের সমস্ত উপ-প্রকারের জন্য অনুরূপ ইউটিলিটিগুলি প্রয়োগ করি (সেট, তালিকা, ইত্যাদি)। আমি ভাবতাম এগুলি ইতিমধ্যে পেয়ারা হয়ে উঠবে, তবে আমি এটি পাইনি।