Bộ sưu tập Apache Commons - Hướng dẫn nhanh

Commons Collections bổ sung cho Java Collections Framework. Nó cung cấp một số tính năng để giúp xử lý bộ sưu tập dễ dàng. Nó cung cấp nhiều giao diện, triển khai và tiện ích mới.

Các tính năng chính của Commons Collections như sau:

  • Bag - Giao diện túi đơn giản hóa các bộ sưu tập có nhiều bản sao của mỗi đối tượng.

  • BidiMap - Giao diện BidiMap cung cấp bản đồ hai hướng, có thể được sử dụng để tra cứu giá trị bằng cách sử dụng khóa hoặc khóa sử dụng giá trị.

  • MapIterator - Giao diện MapIterator cung cấp sự lặp lại đơn giản và dễ dàng trên các bản đồ.

  • Transforming Decorators - Trình trang trí chuyển đổi có thể thay đổi mọi đối tượng của bộ sưu tập khi và khi nó được thêm vào bộ sưu tập.

  • Composite Collections - Bộ sưu tập tổng hợp được sử dụng, trong đó nhiều bộ sưu tập được yêu cầu phải được xử lý thống nhất.

  • Ordered Map - Bản đồ có thứ tự giữ nguyên thứ tự, trong đó các yếu tố được thêm vào.

  • Ordered Set - Bộ có thứ tự giữ lại thứ tự, trong đó các phần tử được thêm vào.

  • Reference map - Bản đồ tham chiếu cho phép các khóa / giá trị được thu thập rác dưới sự kiểm soát chặt chẽ.

  • Comparator implementations - Nhiều triển khai Comparator có sẵn.

  • Iterator implementations - Nhiều triển khai Iterator có sẵn.

  • Adapter Classes - Các lớp bộ điều hợp có sẵn để chuyển đổi mảng và liệt kê thành bộ sưu tập.

  • Utilities- Các tiện ích có sẵn để kiểm tra hoặc tạo các thuộc tính lý thuyết tập hợp điển hình của các tập hợp như liên hiệp, giao điểm. Hỗ trợ đóng cửa.

Thiết lập môi trường cục bộ

Nếu bạn vẫn sẵn sàng thiết lập môi trường của mình cho ngôn ngữ lập trình Java, thì phần này sẽ hướng dẫn bạn cách tải xuống và thiết lập Java trên máy của bạn. Vui lòng làm theo các bước được đề cập bên dưới để thiết lập môi trường.

Java SE có sẵn miễn phí từ liên kết https://www.oracle.com/technetwork/java/archive-139210.html Vì vậy, bạn tải xuống một phiên bản dựa trên hệ điều hành của bạn.

Làm theo hướng dẫn để tải xuống Java và chạy .exe để cài đặt Java trên máy của bạn. Khi bạn đã cài đặt Java trên máy của mình, bạn sẽ cần đặt các biến môi trường để trỏ đến các thư mục cài đặt chính xác.

Thiết lập đường dẫn cho Windows 2000 / XP

Chúng tôi giả định rằng bạn đã cài đặt Java trong c:\Program Files\java\jdk directory

  • Nhấp chuột phải vào 'Máy tính của tôi' và chọn 'Thuộc tính'.

  • Nhấp vào nút 'Biến môi trường' trong tab 'Nâng cao'.

  • Bây giờ, hãy thay đổi biến 'Đường dẫn' để nó cũng chứa đường dẫn đến tệp thực thi Java. Ví dụ, nếu đường dẫn hiện được đặt thành'C:\WINDOWS\SYSTEM32', sau đó thay đổi đường dẫn của bạn để đọc 'C:\WINDOWS\SYSTEM32;c:\Program Files\java\jdk\bin'.

Thiết lập đường dẫn cho Windows 95/98 / ME

Chúng tôi giả định rằng bạn đã cài đặt Java trong c:\Program Files\java\jdk directory.

  • Chỉnh sửa tệp 'C: \ autoexec.bat' và thêm dòng sau vào cuối - 'SET PATH=%PATH%;C:\Program Files\java\jdk\bin'

Thiết lập đường dẫn cho Linux, UNIX, Solaris, FreeBSD

Biến môi trường PATH phải được đặt để trỏ đến nơi, các tệp nhị phân Java đã được cài đặt. Tham khảo tài liệu shell của bạn, nếu bạn gặp khó khăn khi thực hiện việc này.

Ví dụ, nếu bạn sử dụng bash làm trình bao của mình, thì bạn sẽ thêm dòng sau vào cuối '.bashrc: export PATH=/path/to/java:$PATH'

Trình chỉnh sửa Java phổ biến

Để viết các chương trình Java, bạn cần một trình soạn thảo văn bản. Có rất nhiều IDE tinh vi có sẵn trên thị trường. Nhưng hiện tại, bạn có thể xem xét một trong những điều sau:

  • Notepad - Trên máy Windows, bạn có thể sử dụng bất kỳ trình soạn thảo văn bản đơn giản nào như Notepad (Khuyến nghị cho hướng dẫn này), TextPad.

  • Netbeans - Nó là một IDE Java mã nguồn mở và miễn phí, có thể tải xuống từ https://netbeans.org.

  • Eclipse - Nó cũng là một IDE Java được phát triển bởi cộng đồng nguồn mở eclipse và có thể được tải xuống từ https://www.eclipse.org/.

Tải xuống Kho lưu trữ Bộ sưu tập Chung

Tải xuống phiên bản mới nhất của tệp jar Apache Common Collections từ commons-collections4-4.1-bin.zip. Tại thời điểm viết bài hướng dẫn này, chúng tôi đã tải xuốngcommons-collections4-4.1-bin.zip và sao chép nó vào C:\>Apache folder.

Hệ điều hành Tên lưu trữ
các cửa sổ commons-collections4-4.1-bin.zip
Linux commons-collection4-4.1-bin.tar.gz
Mac commons-collection4-4.1-bin.tar.gz

Đặt Môi trường Bộ sưu tập Chung của Apache

Đặt APACHE_HOMEbiến môi trường để trỏ đến vị trí thư mục cơ sở nơi lưu trữ jar Apache trên máy của bạn. Giả sử, chúng tôi đã giải nén commons-collections4-4.1-bin.zip trong thư mục Apache trên các Hệ điều hành khác nhau như sau:

Hệ điều hành Tên lưu trữ
các cửa sổ Đặt biến môi trường APACHE_HOME thành C: \ Apache
Linux xuất APACHE_HOME = / usr / local / Apache
Mac xuất APACHE_HOME = / Library / Apache

Đặt biến CLASSPATH

Đặt CLASSPATHbiến môi trường để trỏ đến vị trí jar Bộ sưu tập chung. Giả sử, bạn đã lưu trữ commons-collections4-4.1-bin.zip trong thư mục Apache trên các Hệ điều hành khác nhau như sau:

Hệ điều hành Đầu ra
các cửa sổ Đặt biến môi trường CLASSPATH thành% CLASSPATH%;% APACHE_HOME% \ commons-collection4-4.1-bin.jar;.;
Linux xuất CLASSPATH = $ CLASSPATH: $ APACHE_HOME / commons-collection4-4.1-bin.jar:.
Mac xuất CLASSPATH = $ CLASSPATH: $ APACHE_HOME / commons-collection4-4.1-bin.jar:.

Giao diện mới được thêm vào túi đỡ. Túi xác định một bộ sưu tập, đếm số lần một đối tượng xuất hiện trong bộ sưu tập. Ví dụ: nếu một Túi chứa {a, a, b, c} thì getCount ("a") sẽ trả về 2 trong khi uniqueSet () trả về các giá trị duy nhất.

Khai báo giao diện

Sau đây là khai báo cho giao diện org.apache.commons.collections4.Bag <E> -

public interface Bag<E>
   extends Collection<E>

Phương pháp

Các phương pháp suy luận túi như sau:

Sr.No. Phương pháp & Mô tả
1

boolean add(E object)

(Vi phạm) Thêm một bản sao của đối tượng được chỉ định vào Túi.

2

boolean add(E object, int nCopies)

Thêm các bản sao nCopies của đối tượng được chỉ định vào Túi.

3

boolean containsAll(Collection<?> coll)

(Vi phạm) Trả về true nếu túi chứa tất cả các phần tử trong bộ sưu tập đã cho, tôn trọng số lượng.

4

int getCount(Object object)

Trả về số lần xuất hiện (số lượng) của đối tượng đã cho hiện có trong túi.

5

Iterator<E> iterator()

Trả về một Iterator trên toàn bộ tập hợp các thành viên, bao gồm cả các bản sao do số lượng.

6

boolean remove(Object object)

(Vi phạm) Loại bỏ tất cả các lần xuất hiện của đối tượng đã cho khỏi túi.

7

boolean remove(Object object, int nCopies)

Xóa các bản sao nCopies của đối tượng được chỉ định khỏi Túi.

số 8

boolean removeAll(Collection<?> coll)

(Vi phạm) Xóa tất cả các phần tử được đại diện trong bộ sưu tập đã cho, tôn trọng số lượng.

9

boolean retainAll(Collection<?> coll)

(Vi phạm) Loại bỏ bất kỳ thành viên nào của túi không có trong bộ sưu tập đã cho, tôn trọng số lượng.

10

int size()

Trả về tổng số mục trong túi trên tất cả các loại.

11

Set<E> uniqueSet()

Trả về một Tập hợp các phần tử duy nhất trong Túi.

Phương thức được kế thừa

Giao diện này kế thừa các phương thức từ giao diện sau:

  • java.util.Collection

Ví dụ về giao diện túi

Ví dụ về BagTester.java như sau:

import org.apache.commons.collections4.Bag;
import org.apache.commons.collections4.bag.HashBag;
public class BagTester {
   public static void main(String[] args) {
      Bag<String> bag = new HashBag<>();
      //add "a" two times to the bag.
      bag.add("a" , 2);
      //add "b" one time to the bag.
      bag.add("b");
      //add "c" one time to the bag.
      bag.add("c");
      //add "d" three times to the bag.
      bag.add("d",3
      //get the count of "d" present in bag.
      System.out.println("d is present " + bag.getCount("d") + " times.");
      System.out.println("bag: " +bag);
      //get the set of unique values from the bag
      System.out.println("Unique Set: " +bag.uniqueSet());
      //remove 2 occurrences of "d" from the bag
      bag.remove("d",2);
      System.out.println("2 occurences of d removed from bag: " +bag);
      System.out.println("d is present " + bag.getCount("d") + " times.");
      System.out.println("bag: " +bag);
      System.out.println("Unique Set: " +bag.uniqueSet());
   }
}

Đầu ra

Bạn sẽ thấy kết quả sau:

d is present 3 times.
bag: [2:a,1:b,1:c,3:d]
Unique Set: [a, b, c, d]
2 occurences of d removed from bag: [2:a,1:b,1:c,1:d]
d is present 1 times.
bag: [2:a,1:b,1:c,1:d]
Unique Set: [a, b, c, d]

Giao diện mới được thêm vào để hỗ trợ Bản đồ hai chiều. Sử dụng bản đồ hai chiều, một khóa có thể được tra cứu bằng giá trị và giá trị có thể được tra cứu bằng cách dễ dàng.

Khai báo giao diện

Sau đây là khai báo cho org.apache.commons.collections4.BidiMap<K,V> giao diện -

public interface BidiMap<K,V>
   extends IterableMap<K,V>

Phương pháp

Các phương pháp cho Giao diện Bản đồ Bidi như sau:

Sr.No. Phương pháp & Mô tả
1

K getKey(Object value)

Nhận khóa hiện được ánh xạ tới giá trị được chỉ định.

2

BidiMap<V,K> inverseBidiMap()

Có được chế độ xem bản đồ này, nơi các khóa và giá trị được đảo ngược.

3

V put(K key, V value)

Đặt cặp khóa-giá trị vào bản đồ, thay thế bất kỳ cặp nào trước đó.

4

K removeValue(Object value)

Loại bỏ cặp khóa-giá trị hiện được ánh xạ tới giá trị được chỉ định (thao tác tùy chọn).

5

Set<V> values()

Trả về chế độ xem Tập hợp các giá trị có trong bản đồ này.

Phương thức được kế thừa

Giao diện này kế thừa các phương thức từ các giao diện sau:

  • org.apache.commons.collections4.Get

  • org.apache.commons.collections4.IterableGet

  • org.apache.commons.collections4.Put

  • java.util.Map

Ví dụ về giao diện BidiMap

Ví dụ về BidiMapTester.java như sau:

import org.apache.commons.collections4.BidiMap;
import org.apache.commons.collections4.bidimap.TreeBidiMap;
public class BidiMapTester {
   public static void main(String[] args) {
      BidiMap<String, String> bidi = new TreeBidiMap<>();
      bidi.put("One", "1");
      bidi.put("Two", "2");
      bidi.put("Three", "3");
      System.out.println(bidi.get("One"));
      System.out.println(bidi.getKey("1"));
      System.out.println("Original Map: " + bidi);
      bidi.removeValue("1");
      System.out.println("Modified Map: " + bidi);
      BidiMap<String, String> inversedMap = bidi.inverseBidiMap();
      System.out.println("Inversed Map: " + inversedMap);
   }
}

Đầu ra

Khi bạn chạy mã, bạn sẽ thấy kết quả sau:

1
One
Original Map: {One=1, Three=3, Two=2}
Modified Map: {Three=3, Two=2}
Inversed Map: {2=Two, 3=Three}

Giao diện Bản đồ JDK khá khó để lặp lại vì Việc lặp lại được thực hiện trên EntrySet hoặc trên các đối tượng KeySet. MapIterator cung cấp sự lặp lại đơn giản trên Bản đồ. Ví dụ sau minh họa tương tự.

Ví dụ về giao diện MapIterator

Ví dụ cho MapIteratorTester.java như sau:

import org.apache.commons.collections4.IterableMap;
import org.apache.commons.collections4.MapIterator;
import org.apache.commons.collections4.map.HashedMap;
public class MapIteratorTester {
   public static void main(String[] args) {
      IterableMap<String, String> map = new HashedMap<>();
      map.put("1", "One");
      map.put("2", "Two");
      map.put("3", "Three");
      map.put("4", "Four");
      map.put("5", "Five");
      MapIterator<String, String> iterator = map.mapIterator();
      while (iterator.hasNext()) {
         Object key = iterator.next();
         Object value = iterator.getValue();
         System.out.println("key: " + key);
         System.out.println("Value: " + value);
         iterator.setValue(value + "_");
      }
      System.out.println(map);
   }
}

Đầu ra

Đầu ra được nêu dưới đây -

key: 3
Value: Three
key: 5
Value: Five
key: 2
Value: Two
key: 4
Value: Four
key: 1
Value: One
{3=Three_, 5=Five_, 2=Two_, 4=Four_, 1=One_}

OrderedMap là một giao diện mới cho các bản đồ để giữ lại thứ tự mà các phần tử được thêm vào. LinkedMap và ListOrderedMap là hai cách triển khai có sẵn. Giao diện này hỗ trợ trình lặp của Bản đồ và cho phép lặp lại theo cả hai hướng tiến hoặc lùi trong Bản đồ. Ví dụ sau minh họa tương tự.

Ví dụ về giao diện MapIterator

Ví dụ về OrderedMapTester.java như được đưa ra bên dưới:

import org.apache.commons.collections4.OrderedMap;
import org.apache.commons.collections4.map.LinkedMap;
public class OrderedMapTester {
   public static void main(String[] args) {
      OrderedMap<String, String> map = new LinkedMap<String, String>();
      map.put("One", "1");
      map.put("Two", "2");
      map.put("Three", "3");
      System.out.println(map.firstKey());
      System.out.println(map.nextKey("One"));
      System.out.println(map.nextKey("Two"));
   }
}

Đầu ra

Kết quả sẽ như sau:

One
Two
Three

Lớp CollectionUtils của thư viện Apache Commons Collections cung cấp nhiều phương thức tiện ích khác nhau cho các hoạt động phổ biến bao gồm nhiều trường hợp sử dụng. Nó giúp tránh viết mã soạn sẵn. Thư viện này rất hữu ích trước jdk 8 vì các chức năng tương tự hiện được cung cấp trong API luồng của Java 8.

Kiểm tra các phần tử không rỗng

Phương thức addIgnoreNull () của CollectionUtils có thể được sử dụng để đảm bảo rằng chỉ các giá trị không phải null mới được thêm vào bộ sưu tập.

Tờ khai

Sau đây là khai báo cho

org.apache.commons.collections4.CollectionUtils.addIgnoreNull() phương pháp -

public static <T> boolean addIgnoreNull(Collection<T> collection, T object)

Thông số

  • collection - Bộ sưu tập để thêm vào, không được rỗng.

  • object - Đối tượng cần thêm, nếu null sẽ không được thêm vào.

Giá trị trả lại

Đúng nếu bộ sưu tập thay đổi.

ngoại lệ

  • NullPointerException - Nếu bộ sưu tập là rỗng.

Thí dụ

Ví dụ sau đây cho thấy việc sử dụng org.apache.commons.collections4.CollectionUtils.addIgnoreNull()phương pháp. Chúng tôi đang cố gắng thêm một giá trị null và một giá trị mẫu không null.

import java.util.LinkedList;
import java.util.List;
import org.apache.commons.collections4.CollectionUtils;
public class CollectionUtilsTester {
   public static void main(String[] args) {
      List<String> list = new LinkedList<String>();
      CollectionUtils.addIgnoreNull(list, null);
      CollectionUtils.addIgnoreNull(list, "a");
      System.out.println(list);
      if(list.contains(null)) {
         System.out.println("Null value is present");
      } else {
         System.out.println("Null value is not present");
      }
   }
}

Đầu ra

Đầu ra được đề cập bên dưới -

[a]
Null value is not present

Lớp CollectionUtils của thư viện Apache Commons Collections cung cấp nhiều phương thức tiện ích khác nhau cho các hoạt động phổ biến bao gồm nhiều trường hợp sử dụng. Nó giúp tránh viết mã soạn sẵn. Thư viện này rất hữu ích trước jdk 8 vì các chức năng tương tự hiện được cung cấp trong API luồng của Java 8.

Hợp nhất hai danh sách đã sắp xếp

Phương thức collate () của CollectionUtils có thể được sử dụng để hợp nhất hai danh sách đã được sắp xếp.

Tờ khai

Sau đây là khai báo cho

org.apache.commons.collections4.CollectionUtils.collate() phương pháp -

public static <O extends Comparable<? super O>> List<O>
   collate(Iterable<? extends O> a, Iterable<? extends O> b)

Thông số

  • a - Bộ sưu tập đầu tiên, không được rỗng.

  • b - Bộ sưu tập thứ hai, không được rỗng.

Giá trị trả lại

Một Danh sách được sắp xếp mới, chứa các phần tử của Tập hợp a và b.

ngoại lệ

  • NullPointerException - Nếu một trong hai bộ sưu tập là rỗng.

Thí dụ

Ví dụ sau đây cho thấy việc sử dụng org.apache.commons.collections4.CollectionUtils.collate()phương pháp. Chúng tôi sẽ hợp nhất hai danh sách đã sắp xếp và sau đó in danh sách đã hợp nhất và sắp xếp.

import java.util.Arrays;
import java.util.List;
import org.apache.commons.collections4.CollectionUtils;
public class CollectionUtilsTester {
   public static void main(String[] args) {
      List<String> sortedList1 = Arrays.asList("A","C","E");
      List<String> sortedList2 = Arrays.asList("B","D","F");
      List<String> mergedList = CollectionUtils.collate(sortedList1, sortedList2);
      System.out.println(mergedList);
   }
}

Đầu ra

Kết quả như sau:

[A, B, C, D, E, F]

Lớp CollectionUtils của thư viện Apache Commons Collections cung cấp nhiều phương thức tiện ích khác nhau cho các hoạt động phổ biến bao gồm nhiều trường hợp sử dụng. Nó giúp tránh viết mã soạn sẵn. Thư viện này rất hữu ích trước jdk 8 vì các chức năng tương tự hiện được cung cấp trong API luồng của Java 8.

Chuyển đổi danh sách

Phương thức collect () của CollectionUtils có thể được sử dụng để biến đổi danh sách một loại đối tượng thành danh sách các loại đối tượng khác nhau.

Tờ khai

Sau đây là khai báo cho

org.apache.commons.collections4.CollectionUtils.collect() phương pháp -

public static <I,O> Collection<O> collect(Iterable<I> inputCollection,
   Transformer<? super I,? extends O> transformer)

Thông số

  • inputCollection - Bộ sưu tập để lấy dữ liệu đầu vào, không được rỗng.

  • Transformer - Máy biến áp để sử dụng, có thể là rỗng.

Giá trị trả lại

Kết quả được biến đổi (danh sách mới).

ngoại lệ

  • NullPointerException - Nếu bộ sưu tập đầu vào là null.

Thí dụ

Ví dụ sau đây cho thấy việc sử dụng org.apache.commons.collections4.CollectionUtils.collect()phương pháp. Chúng tôi sẽ biến đổi danh sách chuỗi thành danh sách số nguyên bằng cách phân tích cú pháp giá trị số nguyên từ Chuỗi.

import java.util.Arrays;
import java.util.List;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Transformer;
public class CollectionUtilsTester {
   public static void main(String[] args) {
      List<String> stringList = Arrays.asList("1","2","3");
      List<Integer> integerList = (List<Integer>) CollectionUtils.collect(
         stringList, new Transformer<String, Integer>() {
         @Override
         public Integer transform(String input) {
            return Integer.parseInt(input);
         }
      });
      System.out.println(integerList);
   }
}

Đầu ra

Khi bạn sử dụng mã, bạn sẽ nhận được mã sau:

[1, 2, 3]

Lớp CollectionUtils của thư viện Apache Commons Collections cung cấp nhiều phương thức tiện ích khác nhau cho các hoạt động phổ biến bao gồm nhiều trường hợp sử dụng. Nó giúp tránh viết mã soạn sẵn. Thư viện này rất hữu ích trước jdk 8 vì các chức năng tương tự hiện được cung cấp trong API luồng của Java 8.

phương thức filter ()

Phương thức filter () của CollectionUtils có thể được sử dụng để lọc danh sách nhằm loại bỏ các đối tượng không thỏa mãn điều kiện do vị từ truyền vào.

Tờ khai

Sau đây là khai báo cho

org.apache.commons.collections4.CollectionUtils.filter() phương pháp -

public static <T> boolean filter(Iterable<T> collection,
   Predicate<? super T> predicate)

Thông số

  • collection - Bộ sưu tập để lấy dữ liệu đầu vào, không được rỗng.

  • predicate - Vị ngữ để sử dụng như một bộ lọc, có thể rỗng.

Giá trị trả lại

Đúng nếu bộ sưu tập được sửa đổi bởi lệnh gọi này, sai nếu không.

Thí dụ

Ví dụ sau đây cho thấy việc sử dụng org.apache.commons.collections4.CollectionUtils.filter()phương pháp. Chúng tôi sẽ lọc danh sách các số nguyên để chỉ lấy các số chẵn.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;
public class CollectionUtilsTester {
   public static void main(String[] args) {
      List<Integer> integerList = new ArrayList<Integer>(); 
      integerList.addAll(Arrays.asList(1,2,3,4,5,6,7,8));
      System.out.println("Original List: " + integerList);
      CollectionUtils.filter(integerList, new Predicate<Integer>() {
         @Override
         public boolean evaluate(Integer input) {
            if(input.intValue() % 2 == 0) {
               return true;
            }
            return false;
         }
      });
      System.out.println("Filtered List (Even numbers): " + integerList);
   }
}

Đầu ra

Nó sẽ tạo ra kết quả sau:

Original List: [1, 2, 3, 4, 5, 6, 7, 8]
Filtered List (Even numbers): [2, 4, 6, 8]

phương thức filterInverse ()

Phương thức filterInverse () của CollectionUtils có thể được sử dụng để lọc danh sách nhằm loại bỏ các đối tượng thỏa mãn điều kiện do vị từ truyền vào.

Tờ khai

Sau đây là khai báo cho

org.apache.commons.collections4.CollectionUtils.filterInverse() phương pháp -

public static <T> boolean filterInverse(
   Iterable<T> collection, Predicate<? super T> predicate)

Thông số

  • collection - Bộ sưu tập để lấy dữ liệu đầu vào, không được rỗng.

  • predicate - Vị ngữ để sử dụng như một bộ lọc, có thể rỗng.

Giá trị trả lại

Đúng nếu bộ sưu tập được sửa đổi bởi lệnh gọi này, sai nếu không.

Thí dụ

Ví dụ sau đây cho thấy việc sử dụng org.apache.commons.collections4.CollectionUtils.filterInverse()phương pháp. Chúng tôi sẽ lọc danh sách các số nguyên để chỉ lấy các số lẻ.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;
public class CollectionUtilsTester {
   public static void main(String[] args) {
      List<Integer> integerList = new ArrayList<Integer>(); 
      integerList.addAll(Arrays.asList(1,2,3,4,5,6,7,8));
      System.out.println("Original List: " + integerList); 
      CollectionUtils.filterInverse(integerList, new Predicate<Integer>() {
         @Override
         public boolean evaluate(Integer input) {
            if(input.intValue() % 2 == 0) {
               return true;
            }
            return false;
         }
      });
      System.out.println("Filtered List (Odd numbers): " + integerList);
   }
}

Đầu ra

Kết quả như đã nêu dưới đây -

Original List: [1, 2, 3, 4, 5, 6, 7, 8]
Filtered List (Odd numbers): [1, 3, 5, 7]

Lớp CollectionUtils của thư viện Apache Commons Collections cung cấp nhiều phương thức tiện ích khác nhau cho các hoạt động phổ biến bao gồm nhiều trường hợp sử dụng. Nó giúp tránh viết mã soạn sẵn. Thư viện này rất hữu ích trước jdk 8 vì các chức năng tương tự hiện được cung cấp trong API luồng của Java 8.

Kiểm tra danh sách không trống

Phương thức isNotEmpty () của CollectionUtils có thể được sử dụng để kiểm tra xem danh sách có trống hay không mà không cần lo lắng về danh sách rỗng. Vì vậy, kiểm tra null không bắt buộc phải đặt ở khắp mọi nơi trước khi kiểm tra kích thước của danh sách.

Tờ khai

Sau đây là khai báo cho

org.apache.commons.collections4.CollectionUtils.isNotEmpty() phương pháp -

public static boolean isNotEmpty(Collection<?> coll)

Thông số

  • coll - Bộ sưu tập để kiểm tra, có thể là rỗng.

Giá trị trả lại

Đúng nếu khác rỗng và không rỗng.

Thí dụ

Ví dụ sau đây cho thấy việc sử dụng org.apache.commons.collections4.CollectionUtils.isNotEmpty()phương pháp. Chúng tôi sẽ kiểm tra danh sách trống hay không.

import java.util.List;
import org.apache.commons.collections4.CollectionUtils;
public class CollectionUtilsTester {
   public static void main(String[] args) {
      List<String> list = getList();
      System.out.println("Non-Empty List Check: " + checkNotEmpty1(list));
      System.out.println("Non-Empty List Check: " + checkNotEmpty1(list));
   }
   static List<String> getList() {
      return null;
   }
   static boolean checkNotEmpty1(List<String> list) {
      return !(list == null || list.isEmpty());
   }
   static boolean checkNotEmpty2(List<String> list) {
      return CollectionUtils.isNotEmpty(list);
   }
}

Đầu ra

Đầu ra được đưa ra dưới đây -

Non-Empty List Check: false
Non-Empty List Check: false

Kiểm tra danh sách trống

Phương thức isEmpty () của CollectionUtils có thể được sử dụng để kiểm tra xem danh sách có trống không mà không cần lo lắng về danh sách rỗng. Vì vậy, kiểm tra null không bắt buộc phải đặt ở khắp mọi nơi trước khi kiểm tra kích thước của danh sách.

Tờ khai

Sau đây là khai báo cho

org.apache.commons.collections4.CollectionUtils.isEmpty() phương pháp -

public static boolean isEmpty(Collection<?> coll)

Thông số

  • coll - Bộ sưu tập để kiểm tra, có thể là rỗng.

Giá trị trả lại

Đúng nếu trống hoặc rỗng.

Thí dụ

Ví dụ sau đây cho thấy việc sử dụng org.apache.commons.collections4.CollectionUtils.isEmpty()phương pháp. Chúng tôi sẽ kiểm tra danh sách trống hay không.

import java.util.List;
import org.apache.commons.collections4.CollectionUtils;
public class CollectionUtilsTester {
   public static void main(String[] args) {
      List<String> list = getList();
      System.out.println("Empty List Check: " + checkEmpty1(list));
      System.out.println("Empty List Check: " + checkEmpty1(list));
   }
   static List<String> getList() {
      return null;
   }
   static boolean checkEmpty1(List<String> list) {
      return (list == null || list.isEmpty());
   }
   static boolean checkEmpty2(List<String> list) {
      return CollectionUtils.isEmpty(list);
   }
}

Đầu ra

Dưới đây là đầu ra của mã:

Empty List Check: true
Empty List Check: true

Lớp CollectionUtils của thư viện Apache Commons Collections cung cấp nhiều phương thức tiện ích khác nhau cho các hoạt động phổ biến bao gồm nhiều trường hợp sử dụng. Nó giúp tránh viết mã soạn sẵn. Thư viện này rất hữu ích trước jdk 8 vì các chức năng tương tự hiện được cung cấp trong API luồng của Java 8.

Kiểm tra danh sách phụ

Phương thức isSubCollection () của CollectionUtils có thể được sử dụng để kiểm tra xem một tập hợp có chứa tập hợp đã cho hay không.

Tờ khai

Sau đây là khai báo cho

org.apache.commons.collections4.CollectionUtils.isSubCollection() phương pháp -

public static boolean isSubCollection(
   Collection<?> a, Collection<?> b)

Thông số

  • a - Bộ sưu tập đầu tiên (con), không được rỗng.

  • b - Bộ sưu tập thứ hai (siêu), không được rỗng.

Giá trị trả lại

Đúng nếu và chỉ khi a là tập con của b.

Thí dụ

Ví dụ sau đây cho thấy việc sử dụng org.apache.commons.collections4.CollectionUtils.isSubCollection()phương pháp. Chúng tôi sẽ kiểm tra một danh sách có nằm trong danh sách khác hay không.

import java.util.Arrays;
import java.util.List;
import org.apache.commons.collections4.CollectionUtils;
public class CollectionUtilsTester {
   public static void main(String[] args) {
      //checking inclusion
      List<String> list1 = Arrays.asList("A","A","A","C","B","B");
      List<String> list2 = Arrays.asList("A","A","B","B");
      System.out.println("List 1: " + list1);
      System.out.println("List 2: " + list2);
      System.out.println("Is List 2 contained in List 1: " + 
         CollectionUtils.isSubCollection(list2, list1));
   }
}

Đầu ra

Bạn sẽ nhận được kết quả sau:

List 1: [A, A, A, C, B, B]
List 2: [A, A, B, B]
Is List 2 contained in List 1: true

Lớp CollectionUtils của thư viện Apache Commons Collections cung cấp nhiều phương thức tiện ích khác nhau cho các hoạt động phổ biến bao gồm nhiều trường hợp sử dụng. Nó giúp tránh viết mã soạn sẵn. Thư viện này rất hữu ích trước jdk 8 vì các chức năng tương tự hiện được cung cấp trong API luồng của Java 8.

Kiểm tra giao lộ

Phương thức giao nhau () của CollectionUtils có thể được sử dụng để lấy các đối tượng chung giữa hai tập hợp (giao nhau).

Tờ khai

Sau đây là khai báo cho org.apache.commons.collections4.CollectionUtils.intersection() phương pháp -

public static <O> Collection<O> intersection(Iterable<? extends O> a,
   Iterable<? extends O> b)

Thông số

  • a - Bộ sưu tập đầu tiên (con), không được rỗng.

  • b - Bộ sưu tập thứ hai (siêu), không được rỗng.

Giá trị trả lại

Giao điểm của hai tập hợp.

Thí dụ

Ví dụ sau đây cho thấy việc sử dụng org.apache.commons.collections4.CollectionUtils.intersection()phương pháp. Chúng tôi sẽ nhận được giao điểm của hai danh sách.

import java.util.Arrays;
import java.util.List;
import org.apache.commons.collections4.CollectionUtils;
public class CollectionUtilsTester {
   public static void main(String[] args) {
      //checking inclusion
      List<String> list1 = Arrays.asList("A","A","A","C","B","B");
      List<String> list2 = Arrays.asList("A","A","B","B");
      System.out.println("List 1: " + list1);
      System.out.println("List 2: " + list2);
      System.out.println("Commons Objects of List 1 and List 2: "
         + CollectionUtils.intersection(list1, list2));
   }
}

Đầu ra

Khi bạn chạy mã, bạn sẽ thấy kết quả sau:

List 1: [A, A, A, C, B, B]
List 2: [A, A, B, B]
Commons Objects of List 1 and List 2: [A, A, B, B]

Lớp CollectionUtils của thư viện Apache Commons Collections cung cấp nhiều phương thức tiện ích khác nhau cho các hoạt động phổ biến bao gồm nhiều trường hợp sử dụng. Nó giúp tránh viết mã soạn sẵn. Thư viện này rất hữu ích trước jdk 8 vì các chức năng tương tự hiện được cung cấp trong API luồng của Java 8.

Kiểm tra phép trừ

Phương thức subtract () của CollectionUtils có thể được sử dụng để lấy bộ sưu tập mới bằng cách trừ các đối tượng của bộ sưu tập này khỏi bộ sưu tập khác.

Tờ khai

Sau đây là khai báo cho org.apache.commons.collections4.CollectionUtils.subtract() phương pháp -

public static <O> Collection<O> subtract(Iterable<? extends O> a,
   Iterable<? extends O> b)

Thông số

  • a - Tập hợp để trừ, không được rỗng.

  • b - Tập hợp để trừ, không được rỗng.

Giá trị trả lại

Một bộ sưu tập mới với các kết quả.

Thí dụ

Ví dụ sau đây cho thấy việc sử dụng org.apache.commons.collections4.CollectionUtils.subtract()phương pháp. Chúng tôi sẽ nhận được phép trừ của hai danh sách.

import java.util.Arrays;
import java.util.List;
import org.apache.commons.collections4.CollectionUtils;
public class CollectionUtilsTester {
   public static void main(String[] args) {
      //checking inclusion
      List<String> list1 = Arrays.asList("A","A","A","C","B","B");
      List<String> list2 = Arrays.asList("A","A","B","B");
      System.out.println("List 1: " + list1);
      System.out.println("List 2: " + list2);
      System.out.println("List 1 - List 2: " + CollectionUtils.subtract(list1, list2));
   }
}

Đầu ra

Khi bạn thực thi đoạn mã trên, bạn sẽ thấy kết quả sau:

List 1: [A, A, A, C, B, B]
List 2: [A, A, B, B]
List 1 - List 2: [A, C]

Lớp CollectionUtils của thư viện Apache Commons Collections cung cấp nhiều phương thức tiện ích khác nhau cho các hoạt động phổ biến bao gồm nhiều trường hợp sử dụng. Nó giúp tránh viết mã soạn sẵn. Thư viện này rất hữu ích trước jdk 8 vì các chức năng tương tự hiện được cung cấp trong API luồng của Java 8.

Kiểm tra công đoàn

Phương thức union () của CollectionUtils có thể được sử dụng để lấy kết hợp của hai tập hợp.

Tờ khai

Sau đây là khai báo cho org.apache.commons.collections4.CollectionUtils.union() phương pháp -

public static <O> Collection<O> union(
   Iterable<? extends O> a, Iterable<? extends O> b)

Thông số

  • a - Bộ sưu tập đầu tiên, không được rỗng.

  • b - Bộ sưu tập thứ hai, không được rỗng.

Giá trị trả lại

Sự kết hợp của hai bộ sưu tập.

Thí dụ

Ví dụ sau đây cho thấy việc sử dụng org.apache.commons.collections4.CollectionUtils.union()phương pháp. Chúng tôi sẽ nhận được sự kết hợp của hai danh sách.

import java.util.Arrays;
import java.util.List;
import org.apache.commons.collections4.CollectionUtils;
public class CollectionUtilsTester {
   public static void main(String[] args) {
      //checking inclusion
      List<String> list1 = Arrays.asList("A","A","A","C","B","B");
      List<String> list2 = Arrays.asList("A","A","B","B");
      System.out.println("List 1: " + list1);
      System.out.println("List 2: " + list2);
      System.out.println("Union of List 1 and List 2: "
         + CollectionUtils.union(list1, list2));
   }
}

Đầu ra

Điều này tạo ra kết quả sau:

List 1: [A, A, A, C, B, B]
List 2: [A, A, B, B]
Union of List 1 and List 2: [A, A, A, B, B, C]