คอลเลกชัน Apache Commons - คู่มือฉบับย่อ
Commons Collections เพิ่ม Java Collections Framework มีคุณสมบัติหลายประการเพื่อให้การจัดการคอลเลกชันเป็นเรื่องง่าย มีอินเทอร์เฟซการใช้งานและยูทิลิตี้ใหม่ ๆ มากมาย
คุณสมบัติหลักของ Commons Collections มีดังนี้ -
Bag - อินเทอร์เฟซกระเป๋าช่วยลดความซับซ้อนของคอลเลกชันซึ่งมีสำเนาหลายชุดของแต่ละวัตถุ
BidiMap - อินเทอร์เฟซ BidiMap มีแผนที่แบบสองทิศทางซึ่งสามารถใช้เพื่อค้นหาค่าโดยใช้คีย์หรือคีย์โดยใช้ค่า
MapIterator - อินเทอร์เฟซ MapIterator ให้การทำซ้ำบนแผนที่ที่ง่ายและสะดวก
Transforming Decorators - นักตกแต่งที่เปลี่ยนรูปแบบสามารถปรับเปลี่ยนทุกวัตถุของคอลเลกชันได้เช่นเดียวกับเมื่อมีการเพิ่มเข้าไปในคอลเลกชัน
Composite Collections - มีการใช้คอลเลกชันคอมโพสิตซึ่งจำเป็นต้องจัดการหลายคอลเลกชันอย่างสม่ำเสมอ
Ordered Map - แผนที่ที่สั่งซื้อจะคงลำดับไว้ซึ่งองค์ประกอบต่างๆจะถูกเพิ่มเข้ามา
Ordered Set - ชุดที่สั่งซื้อจะคงลำดับไว้ซึ่งองค์ประกอบต่างๆจะถูกเพิ่มเข้ามา
Reference map - แผนที่อ้างอิงช่วยให้สามารถรวบรวมคีย์ / ค่าได้ภายใต้การควบคุมอย่างใกล้ชิด
Comparator implementations - มีการใช้งานตัวเปรียบเทียบมากมาย
Iterator implementations - มีการใช้งาน Iterator มากมาย
Adapter Classes - คลาสอะแดปเตอร์มีไว้เพื่อแปลงอาร์เรย์และการแจงนับเป็นคอลเลกชัน
Utilities- ยูทิลิตี้มีไว้เพื่อทดสอบหรือสร้างคุณสมบัติทฤษฎีเซตทั่วไปของคอลเลกชันเช่นยูเนี่ยนจุดตัด รองรับการปิด
การตั้งค่าสภาพแวดล้อมท้องถิ่น
หากคุณยังคงเต็มใจที่จะตั้งค่าสภาพแวดล้อมของคุณสำหรับภาษาการเขียนโปรแกรม Java ส่วนนี้จะแนะนำคุณเกี่ยวกับวิธีดาวน์โหลดและตั้งค่า Java บนเครื่องของคุณ โปรดปฏิบัติตามขั้นตอนด้านล่างเพื่อตั้งค่าสภาพแวดล้อม
Java SE สามารถใช้ได้อย่างอิสระจากลิงค์ https://www.oracle.com/technetwork/java/archive-139210.html ดังนั้นคุณดาวน์โหลดเวอร์ชันที่อิงตามระบบปฏิบัติการของคุณ
ทำตามคำแนะนำเพื่อดาวน์โหลด Java และเรียกใช้. exe เพื่อติดตั้ง Java บนเครื่องของคุณ เมื่อคุณติดตั้ง Java บนเครื่องของคุณแล้วคุณจะต้องตั้งค่าตัวแปรสภาพแวดล้อมให้ชี้ไปที่ไดเร็กทอรีการติดตั้งที่ถูกต้อง
การตั้งค่า Path สำหรับ Windows 2000 / XP
เราสมมติว่าคุณได้ติดตั้ง Java ใน c:\Program Files\java\jdk directory
คลิกขวาที่ 'My Computer' และเลือก 'Properties'
คลิกที่ปุ่ม "ตัวแปรสภาพแวดล้อม" ใต้แท็บ "ขั้นสูง"
ตอนนี้เปลี่ยนตัวแปร 'Path' เพื่อให้มีพา ธ ไปยังไฟล์ปฏิบัติการ Java ตัวอย่างเช่นหากเส้นทางถูกตั้งค่าเป็น'C:\WINDOWS\SYSTEM32'จากนั้นเปลี่ยนเส้นทางของคุณเพื่ออ่าน 'C:\WINDOWS\SYSTEM32;c:\Program Files\java\jdk\bin'.
การตั้งค่าเส้นทางสำหรับ Windows 95/98 / ME
เราสมมติว่าคุณได้ติดตั้ง Java ใน c:\Program Files\java\jdk directory.
แก้ไขไฟล์ 'C: \ autoexec.bat' และเพิ่มบรรทัดต่อไปนี้ในตอนท้าย - 'SET PATH=%PATH%;C:\Program Files\java\jdk\bin'
การตั้งค่า Path สำหรับ Linux, UNIX, Solaris, FreeBSD
ควรตั้งค่า PATH ตัวแปรสภาพแวดล้อมให้ชี้ไปที่ตำแหน่งที่ติดตั้งไบนารีของ Java โปรดดูเอกสารประกอบเชลล์ของคุณหากคุณมีปัญหาในการดำเนินการนี้
ตัวอย่างเช่นถ้าคุณใช้ bash เป็นเชลล์ของคุณคุณจะต้องเพิ่มบรรทัดต่อไปนี้ต่อท้าย '.bashrc: export PATH=/path/to/java:$PATH'
บรรณาธิการ Java ยอดนิยม
ในการเขียนโปรแกรม Java คุณต้องมีโปรแกรมแก้ไขข้อความ มี IDE ที่ซับซ้อนมากมายในตลาด แต่ในตอนนี้คุณสามารถพิจารณาข้อใดข้อหนึ่งต่อไปนี้ -
Notepad - บนเครื่อง Windows คุณสามารถใช้โปรแกรมแก้ไขข้อความง่ายๆเช่น Notepad (แนะนำสำหรับบทช่วยสอนนี้), TextPad
Netbeans - เป็น Java IDE ที่เป็นโอเพ่นซอร์สและฟรีซึ่งสามารถดาวน์โหลดได้จาก https://netbeans.org.
Eclipse - นอกจากนี้ยังเป็น Java IDE ที่พัฒนาโดยชุมชนโอเพนซอร์ส eclipse และสามารถดาวน์โหลดได้จาก https://www.eclipse.org/.
ดาวน์โหลด Common Collections Archive
ดาวน์โหลดไฟล์ jar Apache Common Collections เวอร์ชันล่าสุดจาก commons-collections4-4.1-bin.zip ในขณะที่เขียนบทช่วยสอนนี้เราได้ดาวน์โหลดcommons-collections4-4.1-bin.zip และคัดลอกลงใน C:\>Apache folder.
ระบบปฏิบัติการ | ชื่อที่เก็บถาวร |
---|---|
Windows | commons-collections4-4.1-bin.zip |
ลินุกซ์ | commons-collections4-4.1-bin.tar.gz |
Mac | commons-collections4-4.1-bin.tar.gz |
ตั้งค่าสภาพแวดล้อมคอลเลกชันทั่วไปของ Apache
ตั้งค่า APACHE_HOMEตัวแปรสภาพแวดล้อมเพื่อชี้ไปยังตำแหน่งไดเร็กทอรีฐานที่จัดเก็บ Apache jar ไว้ในเครื่องของคุณ สมมติว่าเราได้แยก commons-collections4-4.1-bin.zip ในโฟลเดอร์ Apache บนระบบปฏิบัติการต่างๆดังนี้ -
ระบบปฏิบัติการ | ชื่อที่เก็บถาวร |
---|---|
Windows | ตั้งค่าตัวแปรสภาพแวดล้อม APACHE_HOME เป็น C: \ Apache |
ลินุกซ์ | ส่งออก APACHE_HOME = / usr / local / Apache |
Mac | ส่งออก APACHE_HOME = / Library / Apache |
ตั้งค่าตัวแปร CLASSPATH
ตั้งค่า CLASSPATHตัวแปรสภาพแวดล้อมเพื่อชี้ไปยังตำแหน่ง jar ของคอลเลกชันทั่วไป สมมติว่าคุณเก็บ commons-collections4-4.1-bin.zip ไว้ในโฟลเดอร์ Apache บนระบบปฏิบัติการต่างๆดังนี้ -
ระบบปฏิบัติการ | เอาต์พุต |
---|---|
Windows | ตั้งค่าตัวแปรสภาพแวดล้อม CLASSPATH เป็น% CLASSPATH%;% APACHE_HOME% \ commons-collections4-4.1-bin.jar; .; |
ลินุกซ์ | ส่งออก CLASSPATH = $ CLASSPATH: $ APACHE_HOME / commons-collections4-4.1-bin.jar:. |
Mac | ส่งออก CLASSPATH = $ CLASSPATH: $ APACHE_HOME / commons-collections4-4.1-bin.jar:. |
มีการเพิ่มอินเทอร์เฟซใหม่เพื่อรองรับกระเป๋า กระเป๋าเป็นตัวกำหนดคอลเลกชันซึ่งจะนับจำนวนครั้งที่วัตถุปรากฏในคอลเลกชัน ตัวอย่างเช่นถ้า Bag มี {a, a, b, c} ดังนั้น getCount ("a") จะส่งคืน 2 ในขณะที่ uniqueSet () ส่งคืนค่าที่ไม่ซ้ำกัน
ประกาศอินเตอร์เฟส
ต่อไปนี้เป็นการประกาศสำหรับอินเตอร์เฟส org.apache.commons.collections4.Bag <E> -
public interface Bag<E>
extends Collection<E>
วิธีการ
วิธีการอนุมานกระเป๋ามีดังนี้ -
ซีเนียร์ | วิธีการและคำอธิบาย |
---|---|
1 | boolean add(E object) (การละเมิด) เพิ่มหนึ่งสำเนาของวัตถุที่ระบุลงในกระเป๋า |
2 | boolean add(E object, int nCopies) เพิ่มสำเนา nCopies ของวัตถุที่ระบุลงในกระเป๋า |
3 | boolean containsAll(Collection<?> coll) (Violation) จะคืนค่าเป็นจริงหากกระเป๋ามีองค์ประกอบทั้งหมดในคอลเลกชั่นที่กำหนดโดยคำนึงถึงความสำคัญของหัวใจ |
4 | int getCount(Object object) ส่งคืนจำนวนครั้งที่เกิดขึ้น (จำนวนนับ) ของวัตถุที่ระบุที่อยู่ในกระเป๋า |
5 | Iterator<E> iterator() ส่งคืน Iterator ในชุดสมาชิกทั้งหมดรวมถึงสำเนาที่เกิดจากจำนวนสมาชิก |
6 | boolean remove(Object object) (การละเมิด) นำสิ่งที่เกิดขึ้นทั้งหมดออกจากกระเป๋า |
7 | boolean remove(Object object, int nCopies) ลบสำเนา nCopies ของวัตถุที่ระบุออกจากกระเป๋า |
8 | boolean removeAll(Collection<?> coll) (การละเมิด) ลบองค์ประกอบทั้งหมดที่แสดงในคอลเลกชันที่กำหนดโดยคำนึงถึงความสำคัญของหัวใจ |
9 | boolean retainAll(Collection<?> coll) (การละเมิด) นำสมาชิกในกระเป๋าที่ไม่ได้อยู่ในคอลเลกชั่นที่กำหนดออกโดยเคารพต่อความสำคัญของหัวใจ |
10 | int size() ส่งคืนจำนวนสินค้าทั้งหมดในกระเป๋าจากทุกประเภท |
11 | Set<E> uniqueSet() ส่งคืนชุดขององค์ประกอบเฉพาะในกระเป๋า |
วิธีการสืบทอด
อินเทอร์เฟซนี้สืบทอดวิธีการจากอินเทอร์เฟซต่อไปนี้ -
- java.util.Collection
ตัวอย่าง Bag Interface
ตัวอย่างของ BagTester.java มีดังนี้ -
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());
}
}
เอาต์พุต
คุณจะเห็นผลลัพธ์ต่อไปนี้ -
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]
เพิ่มอินเทอร์เฟซใหม่เพื่อรองรับแผนที่แบบสองทิศทาง การใช้แผนที่แบบสองทิศทางสามารถค้นหาคีย์โดยใช้ค่าและค่าสามารถค้นหาโดยใช้คีย์ได้อย่างง่ายดาย
ประกาศอินเตอร์เฟส
ต่อไปนี้เป็นคำประกาศสำหรับ org.apache.commons.collections4.BidiMap<K,V> อินเตอร์เฟซ -
public interface BidiMap<K,V>
extends IterableMap<K,V>
วิธีการ
วิธีการสำหรับ BidiMap Interface มีดังต่อไปนี้ -
ซีเนียร์ | วิธีการและคำอธิบาย |
---|---|
1 | K getKey(Object value) รับคีย์ที่แมปกับค่าที่ระบุในปัจจุบัน |
2 | BidiMap<V,K> inverseBidiMap() รับมุมมองของแผนที่นี้ซึ่งมีการย้อนกลับของคีย์และค่า |
3 | V put(K key, V value) วางคู่คีย์ - ค่าลงในแผนที่แทนที่คู่ก่อนหน้า |
4 | K removeValue(Object value) ลบคู่คีย์ - ค่าที่แมปกับค่าที่ระบุในปัจจุบัน (การดำเนินการที่เป็นทางเลือก) |
5 | Set<V> values() ส่งคืนมุมมองชุดของค่าที่มีอยู่ในแผนที่นี้ |
วิธีการสืบทอด
อินเทอร์เฟซนี้สืบทอดวิธีการจากอินเทอร์เฟซต่อไปนี้ -
org.apache.commons.collections4.Get
org.apache.commons.collections4.IterableGet
org.apache.commons.collections4.Put
java.util.Map
ตัวอย่างของ BidiMap Interface
ตัวอย่างของ BidiMapTester.java มีดังนี้ -
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);
}
}
เอาต์พุต
เมื่อคุณเรียกใช้รหัสคุณจะเห็นผลลัพธ์ต่อไปนี้ -
1
One
Original Map: {One=1, Three=3, Two=2}
Modified Map: {Three=3, Two=2}
Inversed Map: {2=Two, 3=Three}
อินเทอร์เฟซ JDK Map นั้นค่อนข้างยากที่จะทำซ้ำเนื่องจากการทำซ้ำจะทำได้บน EntrySet หรือบนวัตถุ KeySet MapIterator ให้การทำซ้ำง่าย ๆ บนแผนที่ ตัวอย่างต่อไปนี้แสดงให้เห็นเช่นเดียวกัน
ตัวอย่างของ MapIterator Interface
ตัวอย่างสำหรับ MapIteratorTester.java มีดังนี้ -
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);
}
}
เอาต์พุต
ผลลัพธ์ระบุไว้ด้านล่าง -
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_}
OrderMap เป็นอินเทอร์เฟซใหม่สำหรับแผนที่เพื่อรักษาลำดับการเพิ่มองค์ประกอบ LinkedMap และ ListOrderMap เป็นการนำไปใช้งานสองแบบ อินเทอร์เฟซนี้รองรับตัววนซ้ำของแผนที่และอนุญาตให้ทำซ้ำได้ทั้งสองทิศทางทั้งไปข้างหน้าหรือข้างหลังในแผนที่ ตัวอย่างต่อไปนี้แสดงให้เห็นเช่นเดียวกัน
ตัวอย่างของ MapIterator Interface
ตัวอย่างของ OrderMapTester.java มีดังต่อไปนี้ -
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"));
}
}
เอาต์พุต
ผลลัพธ์จะเป็นดังนี้ -
One
Two
Three
คลาส CollectionUtils ของไลบรารี Apache Commons Collections มีวิธีการยูทิลิตี้ที่หลากหลายสำหรับการดำเนินการทั่วไปซึ่งครอบคลุมกรณีการใช้งานที่หลากหลาย ช่วยหลีกเลี่ยงการเขียนโค้ดสำเร็จรูป ไลบรารีนี้มีประโยชน์มากก่อนหน้า jdk 8 เนื่องจากฟังก์ชันที่คล้ายกันมีให้ใน Stream API ของ Java 8 แล้ว
ตรวจสอบองค์ประกอบที่ไม่ใช่ Null
สามารถใช้เมธอด addIgnoreNull () ของ CollectionUtils เพื่อให้แน่ใจว่ามีการเพิ่มเฉพาะค่าที่ไม่ใช่ค่าว่างลงในคอลเล็กชัน
คำประกาศ
ต่อไปนี้เป็นคำประกาศสำหรับ
org.apache.commons.collections4.CollectionUtils.addIgnoreNull() วิธีการ -
public static <T> boolean addIgnoreNull(Collection<T> collection, T object)
พารามิเตอร์
collection - คอลเล็กชันที่จะเพิ่มต้องไม่เป็นค่าว่าง
object - วัตถุที่จะเพิ่มหากเป็นโมฆะจะไม่ถูกเพิ่ม
ส่งคืนค่า
เป็นจริงหากคอลเล็กชันมีการเปลี่ยนแปลง
ข้อยกเว้น
NullPointerException - หากคอลเล็กชันเป็นโมฆะ
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงการใช้งาน org.apache.commons.collections4.CollectionUtils.addIgnoreNull()วิธี. เรากำลังพยายามเพิ่มค่า null และค่าตัวอย่างที่ไม่ใช่ค่า 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");
}
}
}
เอาต์พุต
ผลลัพธ์ดังต่อไปนี้ -
[a]
Null value is not present
คลาส CollectionUtils ของไลบรารี Apache Commons Collections มีวิธีการยูทิลิตี้ที่หลากหลายสำหรับการดำเนินการทั่วไปซึ่งครอบคลุมกรณีการใช้งานที่หลากหลาย ช่วยหลีกเลี่ยงการเขียนโค้ดสำเร็จรูป ไลบรารีนี้มีประโยชน์มากก่อนหน้า jdk 8 เนื่องจากฟังก์ชันที่คล้ายกันมีให้ใน Stream API ของ Java 8 แล้ว
การรวมรายการที่เรียงลำดับสองรายการ
collate () method ของ CollectionUtils สามารถใช้เพื่อรวมสองรายการที่เรียงลำดับแล้ว
คำประกาศ
ต่อไปนี้เป็นคำประกาศสำหรับ
org.apache.commons.collections4.CollectionUtils.collate() วิธีการ -
public static <O extends Comparable<? super O>> List<O>
collate(Iterable<? extends O> a, Iterable<? extends O> b)
พารามิเตอร์
a - คอลเล็กชันแรกต้องไม่เป็นค่าว่าง
b - คอลเล็กชันที่สองต้องไม่เป็นค่าว่าง
ส่งคืนค่า
รายการที่จัดเรียงใหม่ซึ่งมีองค์ประกอบของคอลเล็กชัน a และ b
ข้อยกเว้น
NullPointerException - หากคอลเล็กชันใดเป็นโมฆะ
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงการใช้งาน org.apache.commons.collections4.CollectionUtils.collate()วิธี. เราจะรวมรายการที่เรียงลำดับสองรายการจากนั้นพิมพ์รายการที่ผสานและเรียงลำดับ
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);
}
}
เอาต์พุต
ผลลัพธ์มีดังนี้ -
[A, B, C, D, E, F]
คลาส CollectionUtils ของไลบรารี Apache Commons Collections มีวิธีการยูทิลิตี้ที่หลากหลายสำหรับการดำเนินการทั่วไปซึ่งครอบคลุมกรณีการใช้งานที่หลากหลาย ช่วยหลีกเลี่ยงการเขียนโค้ดสำเร็จรูป ไลบรารีนี้มีประโยชน์มากก่อนหน้า jdk 8 เนื่องจากฟังก์ชันที่คล้ายกันมีให้ใน Stream API ของ Java 8 แล้ว
การเปลี่ยนแปลงรายการ
วิธีการรวบรวม () ของ CollectionUtils สามารถใช้ในการแปลงรายการของวัตถุประเภทหนึ่งให้เป็นรายการของวัตถุประเภทต่างๆ
คำประกาศ
ต่อไปนี้เป็นคำประกาศสำหรับ
org.apache.commons.collections4.CollectionUtils.collect() วิธีการ -
public static <I,O> Collection<O> collect(Iterable<I> inputCollection,
Transformer<? super I,? extends O> transformer)
พารามิเตอร์
inputCollection - คอลเลกชันที่จะได้รับข้อมูลจากอาจไม่เป็นค่าว่าง
Transformer - หม้อแปลงที่จะใช้อาจเป็นโมฆะ
ส่งคืนค่า
ผลลัพธ์ที่เปลี่ยนแปลง (รายการใหม่)
ข้อยกเว้น
NullPointerException - หากคอลเลกชันอินพุตเป็นโมฆะ
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงการใช้งาน org.apache.commons.collections4.CollectionUtils.collect()วิธี. เราจะแปลงรายการสตริงเป็นรายการจำนวนเต็มโดยการแยกวิเคราะห์ค่าจำนวนเต็มจาก String
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);
}
}
เอาต์พุต
เมื่อคุณใช้รหัสคุณจะได้รับรหัสต่อไปนี้ -
[1, 2, 3]
คลาส CollectionUtils ของไลบรารี Apache Commons Collections มีวิธีการยูทิลิตี้ที่หลากหลายสำหรับการดำเนินการทั่วไปซึ่งครอบคลุมกรณีการใช้งานที่หลากหลาย ช่วยหลีกเลี่ยงการเขียนโค้ดสำเร็จรูป ไลบรารีนี้มีประโยชน์มากก่อนหน้า jdk 8 เนื่องจากฟังก์ชันที่คล้ายกันมีให้ใน Stream API ของ Java 8 แล้ว
วิธีการกรอง ()
filter () method ของ CollectionUtils สามารถใช้เพื่อกรองรายการเพื่อลบอ็อบเจ็กต์ที่ไม่ตรงตามเงื่อนไขที่เพรดิเคตส่งผ่าน
คำประกาศ
ต่อไปนี้เป็นคำประกาศสำหรับ
org.apache.commons.collections4.CollectionUtils.filter() วิธีการ -
public static <T> boolean filter(Iterable<T> collection,
Predicate<? super T> predicate)
พารามิเตอร์
collection - คอลเลกชันที่จะได้รับข้อมูลจากอาจไม่เป็นค่าว่าง
predicate - เพรดิเคตที่จะใช้เป็นตัวกรองอาจเป็นโมฆะ
ส่งคืนค่า
True หากคอลเลกชันถูกแก้ไขโดยการเรียกนี้มิฉะนั้นจะเป็นเท็จ
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงการใช้งาน org.apache.commons.collections4.CollectionUtils.filter()วิธี. เราจะกรองรายการจำนวนเต็มเพื่อให้ได้เลขคู่เท่านั้น
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);
}
}
เอาต์พุต
มันจะให้ผลลัพธ์ดังต่อไปนี้ -
Original List: [1, 2, 3, 4, 5, 6, 7, 8]
Filtered List (Even numbers): [2, 4, 6, 8]
filterInverse () วิธีการ
filterInverse () เมธอด CollectionUtils สามารถใช้เพื่อกรองรายการเพื่อลบอ็อบเจ็กต์ซึ่งเป็นไปตามเงื่อนไขที่กำหนดโดยเพรดิเคตที่ส่งผ่าน
คำประกาศ
ต่อไปนี้เป็นคำประกาศสำหรับ
org.apache.commons.collections4.CollectionUtils.filterInverse() วิธีการ -
public static <T> boolean filterInverse(
Iterable<T> collection, Predicate<? super T> predicate)
พารามิเตอร์
collection - คอลเลกชันที่จะได้รับข้อมูลจากอาจไม่เป็นค่าว่าง
predicate - เพรดิเคตที่จะใช้เป็นตัวกรองอาจเป็นโมฆะ
ส่งคืนค่า
True หากคอลเลกชันถูกแก้ไขโดยการเรียกนี้มิฉะนั้นจะเป็นเท็จ
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงการใช้งาน org.apache.commons.collections4.CollectionUtils.filterInverse()วิธี. เราจะกรองรายการจำนวนเต็มเพื่อให้ได้จำนวนคี่เท่านั้น
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);
}
}
เอาต์พุต
ผลลัพธ์เป็นไปตามที่ระบุไว้ด้านล่าง -
Original List: [1, 2, 3, 4, 5, 6, 7, 8]
Filtered List (Odd numbers): [1, 3, 5, 7]
คลาส CollectionUtils ของไลบรารี Apache Commons Collections มีวิธีการยูทิลิตี้ที่หลากหลายสำหรับการดำเนินการทั่วไปซึ่งครอบคลุมกรณีการใช้งานที่หลากหลาย ช่วยหลีกเลี่ยงการเขียนโค้ดสำเร็จรูป ไลบรารีนี้มีประโยชน์มากก่อนหน้า jdk 8 เนื่องจากฟังก์ชันที่คล้ายกันมีให้ใน Stream API ของ Java 8 แล้ว
กำลังตรวจสอบรายการที่ไม่ว่างเปล่า
isNotEmpty () วิธีการ CollectionUtils สามารถใช้เพื่อตรวจสอบว่ารายการไม่ว่างเปล่าโดยไม่ต้องกังวลเกี่ยวกับรายการว่าง ดังนั้นจึงไม่จำเป็นต้องวางการตรวจสอบว่างทุกที่ก่อนที่จะตรวจสอบขนาดของรายการ
คำประกาศ
ต่อไปนี้เป็นคำประกาศสำหรับ
org.apache.commons.collections4.CollectionUtils.isNotEmpty() วิธีการ -
public static boolean isNotEmpty(Collection<?> coll)
พารามิเตอร์
coll - คอลเล็กชันที่จะตรวจสอบอาจเป็นโมฆะ
ส่งคืนค่า
เป็นจริงหากไม่เป็นค่าว่างและไม่ว่างเปล่า
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงการใช้งาน org.apache.commons.collections4.CollectionUtils.isNotEmpty()วิธี. เราจะตรวจสอบว่ารายการว่างเปล่าหรือไม่
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);
}
}
เอาต์พุต
ผลลัพธ์จะได้รับด้านล่าง -
Non-Empty List Check: false
Non-Empty List Check: false
กำลังตรวจสอบรายการว่าง
isEmpty () เมธอด CollectionUtils สามารถใช้เพื่อตรวจสอบว่ารายการว่างเปล่าโดยไม่ต้องกังวลเกี่ยวกับรายการว่าง ดังนั้นจึงไม่จำเป็นต้องวางการตรวจสอบว่างทุกที่ก่อนที่จะตรวจสอบขนาดของรายการ
คำประกาศ
ต่อไปนี้เป็นคำประกาศสำหรับ
org.apache.commons.collections4.CollectionUtils.isEmpty() วิธีการ -
public static boolean isEmpty(Collection<?> coll)
พารามิเตอร์
coll - คอลเล็กชันที่จะตรวจสอบอาจเป็นโมฆะ
ส่งคืนค่า
True ถ้าว่างเปล่าหรือเป็นโมฆะ
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงการใช้งาน org.apache.commons.collections4.CollectionUtils.isEmpty()วิธี. เราจะตรวจสอบว่ารายการว่างเปล่าหรือไม่
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);
}
}
เอาต์พุต
ด้านล่างเป็นผลลัพธ์ของรหัส -
Empty List Check: true
Empty List Check: true
คลาส CollectionUtils ของไลบรารี Apache Commons Collections มีวิธีการยูทิลิตี้ที่หลากหลายสำหรับการดำเนินการทั่วไปซึ่งครอบคลุมกรณีการใช้งานที่หลากหลาย ช่วยหลีกเลี่ยงการเขียนโค้ดสำเร็จรูป ไลบรารีนี้มีประโยชน์มากก่อนหน้า jdk 8 เนื่องจากฟังก์ชันที่คล้ายกันมีให้ใน Stream API ของ Java 8 แล้ว
กำลังตรวจสอบรายการย่อย
isSubCollection () method ของ CollectionUtils สามารถใช้เพื่อตรวจสอบว่าคอลเลกชันมีคอลเล็กชันที่กำหนดหรือไม่
คำประกาศ
ต่อไปนี้เป็นคำประกาศสำหรับ
org.apache.commons.collections4.CollectionUtils.isSubCollection() วิธีการ -
public static boolean isSubCollection(
Collection<?> a, Collection<?> b)
พารามิเตอร์
a - คอลเล็กชัน (ย่อย) แรกต้องไม่เป็นโมฆะ
b - คอลเล็กชัน (super) ที่สองต้องไม่เป็นโมฆะ
ส่งคืนค่า
จริงถ้า a เป็นคอลเลกชันย่อยของ b
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงการใช้งาน org.apache.commons.collections4.CollectionUtils.isSubCollection()วิธี. เราจะตรวจสอบรายชื่อว่าเป็นส่วนหนึ่งของรายการอื่นหรือไม่
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));
}
}
เอาต์พุต
คุณจะได้รับผลลัพธ์ต่อไปนี้ -
List 1: [A, A, A, C, B, B]
List 2: [A, A, B, B]
Is List 2 contained in List 1: true
คลาส CollectionUtils ของไลบรารี Apache Commons Collections มีวิธีการยูทิลิตี้ที่หลากหลายสำหรับการดำเนินการทั่วไปซึ่งครอบคลุมกรณีการใช้งานที่หลากหลาย ช่วยหลีกเลี่ยงการเขียนโค้ดสำเร็จรูป ไลบรารีนี้มีประโยชน์มากก่อนหน้า jdk 8 เนื่องจากฟังก์ชันที่คล้ายกันมีให้ใน Stream API ของ Java 8 แล้ว
กำลังตรวจสอบจุดตัด
สี่แยก () วิธีการของ CollectionUtils สามารถใช้เพื่อรับวัตถุทั่วไประหว่างสองคอลเลกชัน (จุดตัด)
คำประกาศ
ต่อไปนี้เป็นคำประกาศสำหรับ org.apache.commons.collections4.CollectionUtils.intersection() วิธีการ -
public static <O> Collection<O> intersection(Iterable<? extends O> a,
Iterable<? extends O> b)
พารามิเตอร์
a - คอลเล็กชัน (ย่อย) แรกต้องไม่เป็นโมฆะ
b - คอลเล็กชัน (super) ที่สองต้องไม่เป็นโมฆะ
ส่งคืนค่า
จุดตัดของทั้งสองคอลเลกชัน
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงการใช้งาน org.apache.commons.collections4.CollectionUtils.intersection()วิธี. เราจะได้จุดตัดของสองรายการ
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));
}
}
เอาต์พุต
เมื่อคุณเรียกใช้รหัสคุณจะเห็นผลลัพธ์ต่อไปนี้ -
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]
คลาส CollectionUtils ของไลบรารี Apache Commons Collections มีวิธีการยูทิลิตี้ที่หลากหลายสำหรับการดำเนินการทั่วไปซึ่งครอบคลุมกรณีการใช้งานที่หลากหลาย ช่วยหลีกเลี่ยงการเขียนโค้ดสำเร็จรูป ไลบรารีนี้มีประโยชน์มากก่อนหน้า jdk 8 เนื่องจากฟังก์ชันที่คล้ายกันมีให้ใน Stream API ของ Java 8 แล้ว
กำลังตรวจสอบ Substraction
สามารถใช้วิธีการลบ () ของ CollectionUtils เพื่อรับคอลเล็กชันใหม่โดยการลบวัตถุของคอลเลกชันหนึ่งออกจากอื่น
คำประกาศ
ต่อไปนี้เป็นคำประกาศสำหรับ org.apache.commons.collections4.CollectionUtils.subtract() วิธีการ -
public static <O> Collection<O> subtract(Iterable<? extends O> a,
Iterable<? extends O> b)
พารามิเตอร์
a - คอลเล็กชันที่จะลบออกต้องไม่เป็นค่าว่าง
b - คอลเล็กชันที่จะลบต้องไม่เป็นค่าว่าง
ส่งคืนค่า
คอลเลกชันใหม่พร้อมผลลัพธ์
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงการใช้งาน org.apache.commons.collections4.CollectionUtils.subtract()วิธี. เราจะได้การลบสองรายการ
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));
}
}
เอาต์พุต
เมื่อคุณรันโค้ดด้านบนคุณจะเห็นผลลัพธ์ต่อไปนี้ -
List 1: [A, A, A, C, B, B]
List 2: [A, A, B, B]
List 1 - List 2: [A, C]
คลาส CollectionUtils ของไลบรารี Apache Commons Collections มีวิธีการยูทิลิตี้ที่หลากหลายสำหรับการดำเนินการทั่วไปซึ่งครอบคลุมกรณีการใช้งานที่หลากหลาย ช่วยหลีกเลี่ยงการเขียนโค้ดสำเร็จรูป ไลบรารีนี้มีประโยชน์มากก่อนหน้า jdk 8 เนื่องจากฟังก์ชันที่คล้ายกันมีให้ใน Stream API ของ Java 8 แล้ว
กำลังตรวจสอบสหภาพ
สามารถใช้วิธีการรวบรวมยูเนี่ยน () เพื่อรับการรวมกันของสองคอลเลกชัน
คำประกาศ
ต่อไปนี้เป็นคำประกาศสำหรับ org.apache.commons.collections4.CollectionUtils.union() วิธีการ -
public static <O> Collection<O> union(
Iterable<? extends O> a, Iterable<? extends O> b)
พารามิเตอร์
a - คอลเล็กชันแรกต้องไม่เป็นค่าว่าง
b - คอลเล็กชันที่สองต้องไม่เป็นค่าว่าง
ส่งคืนค่า
การรวมกันของสองคอลเลกชัน
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงการใช้งาน org.apache.commons.collections4.CollectionUtils.union()วิธี. เราจะได้รับการรวมกันของสองรายการ
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));
}
}
เอาต์พุต
สิ่งนี้สร้างผลลัพธ์ต่อไปนี้ -
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]