Pambuka kanggo CollectionUtils
Kelas utilitas umum liyane sing ngemot akeh cara migunani:
addAll(Koleksi<C> koleksi, C...elemen) | Nambahake kabeh unsur array C menyang koleksi |
addIgnoreNull(Koleksi <T> koleksi, objek T) | Nambah unsur yen ora null |
ngandhutKabeh(Koleksi<?> coll1, Koleksi<?> coll2) | Priksa manawa koleksi1 ngemot kabeh unsur koleksi2 |
ngandhut Any(Koleksi<?> coll1, Koleksi<?> coll2) | Priksa manawa koleksi1 ngemot paling ora siji unsur saka koleksi2 |
countMatches(Iterable<C> input, Predikat<? super C> predikat) | Counts carane akeh unsur ing koleksi marem aturan predikat |
disjunction(Iterable<? extends O> a, Iterable<? extends O> b) | Ngasilake obyek sing mung ana ing siji koleksi, nanging ora loro-lorone |
persimpangan (Iterable<? extends O> a, Iterable<? extends O> b) | Ngasilake koleksi obyek sing dadi bagéan saka loro koleksi bebarengan |
union(Iterable<? extends O> a, Iterable<? extends O> b) | Ngasilake koleksi obyek sing dadi bagean saka paling ora siji koleksi |
kosongKoleksi() | Ngasilake koleksi kosong khusus |
emptyIfNull(Koleksi <T> koleksi) | Ngasilake koleksi kosong yen koleksi == null |
ana(Iterable<C> input, Predikat<? super C> predikat) | Priksa manawa ana unsur ing koleksi sing nyukupi aturan predikat |
extractSingleton(Koleksi<E> koleksi) | Ngasilake mung unsur koleksi |
filter(Iterable<T> koleksi, Predikat<? super T> predikat) | Nyaring unsur koleksi |
find(Iterable<T> koleksi, Predikat<? super T> predikat) | Nggolek unsur koleksi |
isEmpty(Koleksi<?> coll) | Priksa manawa koleksi kosong |
isEqualCollection(Koleksi<?> a, Koleksi<?> b) | Mbandhingake koleksi |
isFull(Koleksi<? ngluwihi Object> coll) | Priksa manawa ana unsur isih bisa ditambahake menyang koleksi |
isNotEmpty(Koleksi<?> coll) | Priksa manawa koleksi ora kosong |
isSubCollection(Koleksi<?> a, Koleksi<?> b) | Priksa manawa koleksi B ana ing koleksi A |
matchesAll(Iterable<C> input, Predikat<? super C> predikat) | Priksa manawa kabeh unsur koleksi marem aturan predikat |
removeAll(Koleksi<E> koleksi, Koleksi<?> mbusak) | Mbusak kabeh unsur koleksi |
retainAll(Collection<C> collection, Collection<?> retain) | Ngasilake koleksi sing ngemot kabeh unsur koleksi sing uga ana ing nahan |
reverseArray(Obyek[] array) | Mbalikake array mundur |
unmodifiableCollection(Collection<? extends C> collection) | Ngasilake pambungkus liwat koleksi. Sembarang upaya kanggo ngowahi koleksi bakal mbuwang pengecualian. |
Ayo goleki sawetara cara.
Cara kanggo mriksa yen koleksi kosong
Mangkene carane gampang kanggo nemtokake manawa koleksi kosong:
CollectionUtils.isEmpty(null); // true
CollectionUtils.isEmpty(new LinkedList<>()); // true
CollectionUtils.isEmpty(Collections.singleton(new int[]{2, 1})); // false
Gampang banget kanggo mriksa manawa koleksi ora kosong:
CollectionUtils.isNotEmpty(null); // false
CollectionUtils.isNotEmpty(new LinkedList<>()); // false
CollectionUtils.isNotEmpty(Collections.singleton(new int[]{2, 1})); // true
Tuladha:
User ivan = new User("Ivan", "ivan@email.com");
User petr = new User("Petr", "petr@email.com");
List<User> users = new ArrayList<>();
System.out.println(CollectionUtils.isEmpty(users)); // true
System.out.println(CollectionUtils.isNotEmpty(users)); // false
users.add(ivan);
users.add(petr);
System.out.println(CollectionUtils.isEmpty(users)); // false
System.out.println(CollectionUtils.isNotEmpty(users)); // true
users = null;
System.out.println(CollectionUtils.isEmpty(users)); // true
System.out.println(CollectionUtils.isNotEmpty(users)); // false
Pandhuan kanggo Apache Commons Collections CollectionUtils
Operasi ing set
Yen sampeyan kudu menehi hasil karo teori set, sampeyan ngerti yen ana 4 operasi dhasar ing set: union, intersection, prabédan lan disjunction.

Kanggo operasi kasebut, kelas CollectionUtils duwe 4 metode:
- serikat()
- persimpangan ()
- disjunction()
- nyuda ()
Ing ngisor iki sawetara conto prasaja:
Asosiasi
List<String> firstList = Arrays.asList("1", "2", "3", "4", "5", "6");
List<String> secondList = Arrays.asList("2", "3", "6", "7", "8", "9");
//combine two sets
Collection<String> result = CollectionUtils.union(firstList, secondList);
System.out.println(ArrayUtils.toString(result)); //[1, 2, 3, 4, 5, 6, 7, 8, 9]
prapatan
List<String> firstList = Arrays.asList("A", "B", "C", "D", "E", "F");
List<String> secondList = Arrays.asList("B", "D", "F", "G", "H", "K");
//intersections of two sets
Collection<String> result = CollectionUtils.intersection(firstList, secondList);
System.out.println(ArrayUtils.toString(result)); //[B, D, F]
Disjunction
List<String> firstList = Arrays.asList("1", "2", "3", "4", "5", "6");
List<String> secondList = Arrays.asList("2", "3", "6", "7", "8", "9");
//disjunction
Collection<String> result = CollectionUtils.disjunction(firstList, secondList);
System.out.println(ArrayUtils.toString(result)); //[1, 4, 5, 7, 8, 9]
Bedane (deduksi)
List<String> firstList = Arrays.asList("1", "2", "3", "4", "5", "6");
List<String> secondList = Arrays.asList("2", "3", "6", "7", "8", "9");
//difference
Collection<String> result = CollectionUtils.subtract(firstList, secondList);
System.out.println(ArrayUtils.toString(result)); // [1, 4, 5]
Operasi ing set, terus
Conto iki nuduhake carane nggunakake papat cara ing ndhuwur kanggo nggarap rong koleksi:
List<Integer> firstList = Arrays.asList(1, 2, 3, 3, 4, 5);
List<Integer> secondList = Arrays.asList(3, 4, 4, 5, 6, 7);
Collection<Integer> union = CollectionUtils.union(firstList, secondList); // An association
Collection<Integer> intersection = CollectionUtils.intersection(firstList, secondList); // Intersection
Collection<Integer> disjunction = CollectionUtils.disjunction(firstList, secondList); // disjunction
Collection<Integer> subtract = CollectionUtils.subtract(firstList, secondList); // Difference
System.out.println("firstList: " + ArrayUtils.toString(firstList.toArray()));
System.out.println("secondList: " + ArrayUtils.toString(secondList.toArray()));
System.out.println("An association: " + ArrayUtils.toString(union.toArray()));
System.out.println("Intersection: " + ArrayUtils.toString(intersection.toArray()));
System.out.println("Disjunction: " + ArrayUtils.toString(disjunction.toArray()));
System.out.println("Difference: " + ArrayUtils.toString(subtract.toArray()));
Hasil kita:
firstList: {1,2,3,3,4,5}
secondList: {3,4,4,5,6,7}
An association: {1,2,3,3,4,4,5,6,7}
intersection: {3,4,5}
Disjunction: {1,2,3,4,6,7}
Difference: {1,2,3}
Sampeyan bisa eksprimen karo cara iki dhewe.
unmodifiableCollection() Metode
Kadhangkala kita kudu ngetrapake metode antarmuka sing kudu ngasilake koleksi data internal obyek kita. Lan amarga data kasebut internal, kita ora pengin ana sing ngganti ing endi wae.
Utawa kita wis nampa nang endi wae koleksi sing ora perlu diganti, nanging dipeksa kanggo pass menyang sawetara cara pihak katelu. Endi jaminan yen dheweke ora bakal ngganti?
Supaya bisa turu kanthi tentrem, koleksi kasebut bisa dibungkus ing bungkus khusus sing bakal mbuwang pengecualian nalika nyoba ngowahi koleksi kasebut.
Tuladha:
Collection<String> firstCollection = new ArrayList<String>();
Collection<String> secondCollection = Collections.unmodifiableCollection(firstCollection);
firstCollection.add("hello");
firstCollection.add("from");
firstCollection.add("codeGym");
//secondCollection.add("have a error");
System.out.println(secondCollection); //[hello, from, codeGym]
Cara Collections.unmodifiableCollection () ngasilake pambungkus liwat koleksi liwati menyang. Yen sampeyan nelpon cara get() , size() , banjur kabeh bakal bisa. Nanging, nalika nelpon add () , set () , mbusak () cara , sampeyan bakal entuk pangecualian.
java.lang.UnsupportedOperationException
at org.apache.commons.collections.collection.UnmodifiableCollection.add(UnmodifiableCollection.java:75)
Nyatane, cara kasebut wis ditandhani ora digunakake lan disaranake nggunakake Collections.unmodifiableCollection(Collection<? ngluwihi T> c) tinimbang .
Collection<String> firstCollection = new ArrayList<String>();
Collection<String> secondCollection =
Collections.unmodifiableCollection(firstCollection);
GO TO FULL VERSION