Mengingat yang kita miliki, Set<String> stringSetkita dapat menggunakan yang berikut:
Java 10 (daftar tidak dapat diverifikasi)
List<String> strList = stringSet.stream().collect(Collectors.toUnmodifiableList());
Java 8 (Daftar yang Dapat Diubah)
import static java.util.stream.Collectors.*;
List<String> stringList1 = stringSet.stream().collect(toList());
Sesuai dokumen untuk metode initoList()
Tidak ada jaminan pada jenis, mutabilitas, serializability, atau keamanan thread dari Daftar yang dikembalikan; jika kontrol lebih besar atas Daftar yang dikembalikan diperlukan, gunakan toCollection (Pemasok).
Jadi jika kita membutuhkan implementasi spesifik misalnya ArrayListkita bisa mendapatkannya dengan cara ini:
List<String> stringList2 = stringSet.stream().
collect(toCollection(ArrayList::new));
Java 8 (Daftar Tidak Diubah)
Kita dapat menggunakan Collections::unmodifiableListmetode dan membungkus daftar yang dikembalikan pada contoh sebelumnya. Kami juga dapat menulis metode khusus kami sebagai:
class ImmutableCollector {
public static <T> Collector<T, List<T>, List<T>> toImmutableList(Supplier<List<T>> supplier) {
return Collector.of( supplier, List::add, (left, right) -> {
left.addAll(right);
return left;
}, Collections::unmodifiableList);
}
}
Dan kemudian menggunakannya sebagai:
List<String> stringList3 = stringSet.stream()
.collect(ImmutableCollector.toImmutableList(ArrayList::new));
Kemungkinan lain adalah menggunakan collectingAndThenmetode yang memungkinkan beberapa transformasi akhir dilakukan sebelum mengembalikan hasil:
List<String> stringList4 = stringSet.stream().collect(collectingAndThen(
toCollection(ArrayList::new),Collections::unmodifiableList));
Satu hal yang perlu diperhatikan adalah bahwa metode ini Collections::unmodifiableListmengembalikan tampilan daftar yang ditentukan yang tidak dapat dimodifikasi, sesuai dok . Koleksi tampilan yang tidak dapat dimodifikasi adalah koleksi yang tidak dapat dimodifikasi dan juga merupakan tampilan ke koleksi dukungan. Perhatikan bahwa perubahan pada koleksi dukungan mungkin masih dimungkinkan, dan jika terjadi, mereka dapat dilihat melalui tampilan yang tidak dapat dimodifikasi. Tetapi metode kolektor Collectors.unmodifiableListmengembalikan daftar yang benar-benar tidak dapat diubah di Java 10 .
java.util.Collection: O (0)