- 共享收藏教程
- 共享收藏 - 主页
- Commons Collections - 概述
- Commons Collections - 环境设置
- Commons Collections - 包接口
- Commons Collections - BidiMap 接口
- Commons Collections - MapIterator 接口
- Commons Collections - OrderedMap 接口
- Commons Collections - 忽略 Null
- Commons Collections - 合并和排序
- Commons Collections - 转换对象
- Commons Collections - 过滤对象
- Commons Collections - 安全空支票
- 共享收藏 - 包容性
- 共享收藏 - 交叉口
- Commons Collections - 减法
- 下议院收藏 - 联盟
- 共享馆藏资源
- 共享收藏 - 快速指南
- Commons Collections - 有用的资源
- 共享收藏 - 讨论
Apache Commons Collections - 快速指南
Apache Commons Collections - 概述
Commons Collections 增强了 Java 集合框架。它提供了多种功能来简化集合处理。它提供了许多新的接口、实现和实用程序。
Commons Collections 的主要特点如下:
Bag - Bag 接口简化了集合,每个对象都有多个副本。
BidiMap - BidiMap 接口提供双向映射,可用于使用键查找值或使用值的键查找值。
MapIterator - MapIterator 接口提供简单易用的地图迭代。
转换装饰器- 转换装饰器可以在将集合中的每个对象添加到集合中时更改它。
复合集合- 使用复合集合,需要统一处理多个集合。
有序映射- 有序映射保留添加元素的顺序。
有序集- 有序集保留添加元素的顺序。
参考映射- 参考映射允许在密切控制下对键/值进行垃圾收集。
比较器实现- 有许多比较器实现可用。
迭代器实现- 有许多迭代器实现可用。
适配器类- 适配器类可用于将数组和枚举转换为集合。
实用程序- 实用程序可用于测试或创建集合的典型集合论属性,例如并集、交集。支持关闭。
Commons Collections - 环境设置
本地环境设置
如果您仍然愿意为 Java 编程语言设置环境,那么本节将指导您如何在计算机上下载和设置 Java。请按照以下步骤设置环境。
Java SE 可从链接www.oracle.com/technetwork/java/archive-139210.html免费获取,因此,您可以根据您的操作系统下载一个版本。
按照说明下载 Java 并运行 .exe 以在您的计算机上安装 Java。在计算机上安装 Java 后,您需要设置环境变量以指向正确的安装目录。
设置 Windows 2000/XP 的路径
我们假设您已将 Java 安装在c:\Program Files\java\jdk 目录中
右键单击“我的电脑”并选择“属性”。
单击“高级”选项卡下的“环境变量”按钮。
现在,更改“Path”变量,使其也包含 Java 可执行文件的路径。例如,如果路径当前设置为'C:\WINDOWS\SYSTEM32',则将路径更改为'C:\WINDOWS\SYSTEM32;c:\Program Files\java\jdk\bin'。
设置 Windows 95/98/ME 的路径
我们假设您已将 Java 安装在c:\Program Files\java\jdk 目录中。
编辑 'C:\autoexec.bat' 文件并在末尾添加以下行 - 'SET PATH=%PATH%;C:\Program Files\java\jdk\bin'。
设置 Linux、UNIX、Solaris、FreeBSD 的路径
环境变量 PATH 应设置为指向 Java 二进制文件的安装位置。如果您在执行此操作时遇到问题,请参阅您的 shell 文档。
例如,如果您使用 bash 作为 shell,那么您可以将以下行添加到“ .bashrc:export PATH=/path/to/java:$PATH”的末尾
流行的 Java 编辑器
要编写 Java 程序,您需要一个文本编辑器。市场上有许多复杂的 IDE。但现在,您可以考虑以下其中一项 -
记事本- 在 Windows 计算机上,您可以使用任何简单的文本编辑器,例如记事本(本教程推荐)、TextPad。
Netbeans - 它是一个开源且免费的 Java IDE,可以从www.netbeans.org/index.html下载。
Eclipse - 它也是由 eclipse 开源社区开发的 Java IDE,可以从www.eclipse.org下载。
下载常用收藏档案
从 commons-collections4-4.1-bin.zip 下载最新版本的 Apache Common Collections jar 文件。在编写本教程时,我们已经下载了commons-collections4-4.1-bin.zip并将其复制到C:\>Apache 文件夹中。
操作系统 | 档案名称 |
---|---|
Windows | commons-collections4-4.1-bin.zip |
Linux | commons-collections4-4.1-bin.tar.gz |
苹果 | commons-collections4-4.1-bin.tar.gz |
设置 Apache 通用集合环境
将APACHE_HOME环境变量设置为指向计算机上存储 Apache jar 的基本目录位置。假设我们已经在各种操作系统上的 Apache 文件夹中提取了 commons-collections4-4.1-bin.zip,如下所示 -
操作系统 | 档案名称 |
---|---|
Windows | 将环境变量 APACHE_HOME 设置为 C:\Apache |
Linux | 导出 APACHE_HOME=/usr/local/Apache |
苹果 | 导出 APACHE_HOME=/库/Apache |
设置 CLASSPATH 变量
将CLASSPATH环境变量设置为指向 Common Collections jar 位置。假设您已将 commons-collections4-4.1-bin.zip 存储在各种操作系统上的 Apache 文件夹中,如下所示 -
操作系统 | 输出 |
---|---|
Windows | 设置环境变量 CLASSPATH 为 %CLASSPATH%;%APACHE_HOME%\commons-collections4-4.1-bin.jar;.; |
Linux | 导出 CLASSPATH=$CLASSPATH:$APACHE_HOME/commons-collections4-4.1-bin.jar:。 |
苹果 | 导出 CLASSPATH=$CLASSPATH:$APACHE_HOME/commons-collections4-4.1-bin.jar:。 |
Apache Commons Collections - 包接口
新接口被添加到支持包中。Bag 定义了一个集合,用于计算对象在集合中出现的次数。例如,如果 Bag 包含 {a, a, b, c},则 getCount("a") 将返回 2,而 uniqueSet() 将返回唯一值。
接口声明
以下是 org.apache.commons.collections4.Bag<E> 接口的声明 -
public interface Bag<E> extends Collection<E>
方法
包推断的方法如下 -
先生。 | 方法及说明 |
---|---|
1 | 布尔加法(E 对象) (违规)将指定对象的一份副本添加到 Bag 中。 |
2 | 布尔添加(E 对象,int nCopies) 将指定对象的 nCopies 副本添加到 Bag。 |
3 | 布尔 containsAll(Collection<?> coll) (违规)如果包包含给定集合中的所有元素,则返回 true,尊重基数。 |
4 | int getCount(对象对象) 返回包中当前给定对象的出现次数(基数)。 |
5 | 迭代器<E> 迭代器() 返回整个成员集的迭代器,包括由于基数而产生的副本。 |
6 | 布尔删除(对象对象) (违规)从包中删除所有出现的给定对象。 |
7 | 布尔删除(对象对象,int nCopies) 从 Bag 中删除指定对象的 nCopies 副本。 |
8 | 布尔removeAll(集合<?> coll) (违规)删除给定集合中表示的所有元素,尊重基数。 |
9 | 布尔保留All(集合<?> coll) (违规)删除包中不属于给定集合的任何成员,尊重基数。 |
10 | 整数大小() 返回包中所有类型的物品总数。 |
11 | 设置<E> uniqueSet() 返回 Bag 中的一组唯一元素。 |
继承的方法
该接口继承了以下接口的方法 -
- java.util.Collectionio。
袋子接口示例
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]
Commons Collections - BidiMap 接口
添加新接口以支持双向映射。使用双向映射,可以轻松地使用值查找键,也可以使用键查找值。
接口声明
以下是org.apache.commons.collections4.BidiMap<K,V>接口的声明-
public interface BidiMap<K,V> extends IterableMap<K,V>
方法
BidiMap 接口的方法如下 -
先生。 | 方法及说明 |
---|---|
1 | K getKey(对象值) 获取当前映射到指定值的键。 |
2 | BidiMap<V,K> inverseBidiMap() 获取此映射的视图,其中键和值是相反的。 |
3 | V put(K键,V值) 将键值对放入映射中,替换之前的任何对。 |
4 | K 移除值(对象值) 删除当前映射到指定值的键值对(可选操作)。 |
5 | 设置<V>值() 返回此映射中包含的值的集合视图。 |
继承的方法
该接口继承了以下接口的方法 -
org.apache.commons.collections4.Ge。
org.apache.commons.collections4.IterableGe。
org.apache.commons.collections4.Pu。
java.util.Ma。
BidiMap接口示例
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}
Commons Collections - MapIterator 接口
JDK Map 接口的迭代非常困难,因为迭代是在 EntrySet 或 KeySet 对象上完成的。MapIterator 提供了对 Map 的简单迭代。下面的例子说明了同样的情况。
MapIterator 接口示例
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_}
Commons Collections - OrderedMap 接口
OrderedMap 是地图的新接口,用于保留添加元素的顺序。LinkedMap 和 ListOrderedMap 是两个可用的实现。该接口支持 Map 的迭代器,并允许在 Map 中向前或向后两个方向进行迭代。下面的例子说明了同样的情况。
MapIterator 接口示例
OrderedMapTester.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
Apache Commons Collections - 忽略 Null
Apache Commons Collections 库的 CollectionUtils 类为涵盖广泛用例的常见操作提供了各种实用方法。它有助于避免编写样板代码。该库在 jdk 8 之前非常有用,因为 Java 8 的 Stream API 现在提供了类似的功能。
检查非空元素
CollectionUtils 的 addIgnoreNull() 方法可用于确保仅将非空值添加到集合中。
宣言
以下是声明
org.apache.commons.collections4.CollectionUtils.addIgnoreNull()方法 -
public static <T> boolean addIgnoreNull(Collection<T> collection, T object)
参数
collection - 要添加到的集合不能为空。
object - 要添加的对象,如果为 null,则不会添加。
返回值
如果集合发生更改,则为 true。
例外
NullPointerException - 如果集合为空。
例子
以下示例显示了org.apache.commons.collections4.CollectionUtils.addIgnoreNull()方法的用法。我们正在尝试添加一个空值和一个示例非空值。
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
Apache Commons Collections - 合并和排序
Apache Commons Collections 库的 CollectionUtils 类为涵盖广泛用例的常见操作提供了各种实用方法。它有助于避免编写样板代码。该库在 jdk 8 之前非常有用,因为 Java 8 的 Stream API 现在提供了类似的功能。
合并两个排序列表
CollectionUtils 的 collate() 方法可用于合并两个已排序的列表。
宣言
以下是声明
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 { 8. Apache Commons Collections — Merge & Sort 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]
Commons Collections - 转换对象
Apache Commons Collections 库的 CollectionUtils 类为涵盖广泛用例的常见操作提供了各种实用方法。它有助于避免编写样板代码。该库在 jdk 8 之前非常有用,因为 Java 8 的 Stream API 现在提供了类似的功能。
转换列表
CollectionUtils 的collect()方法可用于将一种类型的对象列表转换为不同类型的对象列表。
宣言
以下是声明
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]
Commons Collections - 过滤对象
Apache Commons Collections 库的 CollectionUtils 类为涵盖广泛用例的常见操作提供了各种实用方法。它有助于避免编写样板代码。该库在 jdk 8 之前非常有用,因为 Java 8 的 Stream API 现在提供了类似的功能。
过滤器()方法
CollectionUtils 的 filter() 方法可用于过滤列表以删除不满足所传递谓词提供的条件的对象。
宣言
以下是声明
org.apache.commons.collections4.CollectionUtils.filter()方法 -
public static <T> boolean filter(Iterable<T> collection, Predicate<? super T> predicate)
参数
集合- 从中获取输入的集合不能为空。
predicate - 用作过滤器的谓词可以为空。
返回值
如果此调用修改了集合,则为 true,否则为 false。
例子
以下示例显示了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() 方法
CollectionUtils 的 filterInverse() 方法可用于过滤列表以删除满足所传递谓词提供的条件的对象。
宣言
以下是声明
org.apache.commons.collections4.CollectionUtils.filterInverse()方法 -
public static <T> boolean filterInverse(Iterable<T> collection, Predicate<? super T> predicate)
参数
集合- 从中获取输入的集合不能为空。
predicate - 用作过滤器的谓词可以为空。
返回值
如果此调用修改了集合,则为 true,否则为 false。
例子
以下示例显示了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]
Commons Collections - 安全空支票
Apache Commons Collections 库的 CollectionUtils 类为涵盖广泛用例的常见操作提供了各种实用方法。它有助于避免编写样板代码。该库在 jdk 8 之前非常有用,因为 Java 8 的 Stream API 现在提供了类似的功能。
检查非空列表
CollectionUtils 的 isNotEmpty() 方法可用于检查列表是否不为空,而不必担心空列表。因此,在检查列表的大小之前,不需要在任何地方都进行空检查。
宣言
以下是声明
org.apache.commons.collections4.CollectionUtils.isNotEmpty()方法 -
public static boolean isNotEmpty(Collection<?> coll)
参数
coll - 要检查的集合,可能为空。
返回值
如果非空且非空,则为 True。
例子
以下示例显示了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
检查空列表
CollectionUtils 的 isEmpty() 方法可用于检查列表是否为空,而不必担心空列表。因此,在检查列表的大小之前,不需要在任何地方都进行空检查。
宣言
以下是声明
org.apache.commons.collections4.CollectionUtils.isEmpty()方法 -
public static boolean isEmpty(Collection<?> coll)
参数
coll - 要检查的集合,可能为空。
返回值
如果为空或为 null,则为 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
Apache Commons Collections - 包含
Apache Commons Collections 库的 CollectionUtils 类为涵盖广泛用例的常见操作提供了各种实用方法。它有助于避免编写样板代码。该库在 jdk 8 之前非常有用,因为 Java 8 的 Stream API 现在提供了类似的功能。
检查子列表
CollectionUtils 的 isSubCollection() 方法可用于检查集合是否包含给定集合。
宣言
以下是声明
org.apache.commons.collections4.CollectionUtils.isSubCollection()方法 -
public static boolean isSubCollection(Collection<?> a, Collection<?> b)
参数
a - 第一个(子)集合不能为空。
b - 第二个(超级)集合不能为空。
返回值
当且仅当 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
Apache Commons 集合 - 交叉点
Apache Commons Collections 库的 CollectionUtils 类为涵盖广泛用例的常见操作提供了各种实用方法。它有助于避免编写样板代码。该库在 jdk 8 之前非常有用,因为 Java 8 的 Stream API 现在提供了类似的功能。
检查交叉口
CollectionUtils的intersection()方法可用于获取两个集合之间的公共对象(交集)。
宣言
以下是org.apache.commons.collections4.CollectionUtils.intersection()方法的声明-
public static <O> Collection<O> intersection(Iterable<? extends O> a, Iterable<? extends O> b)
参数
a - 第一个(子)集合不能为空。
b - 第二个(超级)集合不能为空。
返回值
两个集合的交集。
例子
以下示例显示了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]
Apache Commons Collections - 减法
Apache Commons Collections 库的 CollectionUtils 类为涵盖广泛用例的常见操作提供了各种实用方法。它有助于避免编写样板代码。该库在 jdk 8 之前非常有用,因为 Java 8 的 Stream API 现在提供了类似的功能。
检查减法
CollectionUtils 的subtract() 方法可用于通过从一个集合中减去另一个集合的对象来获取新集合。
宣言
以下是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]
Apache Commons Collections - 联盟
Apache Commons Collections 库的 CollectionUtils 类为涵盖广泛用例的常见操作提供了各种实用方法。它有助于避免编写样板代码。该库在 jdk 8 之前非常有用,因为 Java 8 的 Stream API 现在提供了类似的功能。
检查联合
CollectionUtils 的 union() 方法可用于获取两个集合的并集。
宣言
以下是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]