`
ColorPanda
  • 浏览: 62948 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JAVA的集合交并差集操作

阅读更多

业务中需求有不同集合中的相同元素,不同元素等。搞了个交并差的集合操作工具类,主要使用到的方法是removeAll、addAll使用set来搞,想的是去除重复:

import java.util.Collection;
import java.util.HashSet;
import java.util.Set;

/**
 * 集合操作.
 * 
 * 进行数学的‘并集’‘交集’‘减法’运算:<br>
 * 并集:addAll.<br>
 * 交集:retainAll.<br>
 * 减法:removeAll.<br>
 * 
 * @since Apr 8, 2014
 * 
 */
public class SetOptUtils {

	/**
	 * 取两数交集.
	 * <P>
	 * Example:
	 * 
	 * <pre>
	 * src={1,2,3},dest={2,4}
	 * intersect(dest,src)={2}
	 * </pre>
	 * 
	 * @param dest
	 *            The destination set.
	 * @param src
	 *            The source set.
	 * @return the same elements of src and dest
	 */
	public static <T> Set<T> intersect(Set<T> dest, Set<T> src) {
		Set<T> set = new HashSet<T>(src.size());
		copy(set, src);
		set.retainAll(dest);
		return set;
	}

	/**
	 * 取两数并集.
	 * <P>
	 * Example:
	 * 
	 * <pre>
	 * src={1,2,3},dest={2,4,5}
	 * union(dest,src)={1,2,3,4,5}
	 * </pre>
	 * 
	 * @param dest
	 *            The destination set.
	 * @param src
	 *            The source set.
	 * @return the all elements of src and dest
	 */
	public static <T> Set<T> union(Set<T> dest, Set<T> src) {
		Set<T> set = new HashSet<T>(src.size());
		copy(set, src);
		set.addAll(dest);
		return set;
	}

	/**
	 * 取两数差集(减法).
	 * <P>
	 * Example:
	 * 
	 * <pre>
	 * src={1,2,3},dest={2,4,5},src-dest={1,3}
	 * diff(dest,src)={1,3}
	 * </pre>
	 * 
	 * @param dest
	 *            The destination set.
	 * @param src
	 *            The source set.
	 * @return the elements in src but not exist dest
	 */
	public static <T> Set<T> diff(Set<T> dest, Set<T> src) {
		Set<T> set = new HashSet<T>(src.size());
		copy(set, src);
		set.removeAll(dest);
		return set;
	}

	/**
	 * 集合判空.
	 * 
	 * @param c
	 *            The source collection.
	 * @return true/false
	 */
	public static boolean isEmpty(Collection<?> c) {
		boolean rs = false;
		if (c == null || (c != null && c.isEmpty())) {
			rs = true;
		}
		return rs;
	}

	/**
	 * 判断两集合是否有相同的元素.
	 * @param dest The destination set.
	 * @param src The source list.
	 * @return true/false
	 */
	public static <T> boolean isSameElements(Set<T> dest, Set<T> src) {
		if (isEmpty(dest) || isEmpty(src)) {
			return false;
		}

		Set<T> set = intersect(dest, src);
		if (set.size() > 0) {
			return true;
		}

		return false;
	}

	/**
	 * Copies all of the elements from src set into dest.
	 * 
	 * @param dest
	 *            The destination set.
	 * @param src
	 *            The source list.
	 */
	private static <T> void copy(Set<T> dest, Set<T> src) {
		dest.addAll(src);
	}

	public static void main(String[] args) {
		Set<String> set = new HashSet<String>();
		Set<String> set2 = new HashSet<String>();
		set2.add("010W");
		System.out.println(diff(set2, set));
	}

}

 如果不需要去重,也可以使用List进行操作。

0
0
分享到:
评论

相关推荐

    【Python入门教程】第48篇集合的对称差集.pdf

    如果你需要计算三个或更多集合的对称差集,可以使用`symmetric_difference()`方法并传入所有集合,或者使用操作符`^`将它们逐个连接。例如: ```python s1 = {1, 2, 3} s2 = {2, 3, 4} s3 = {3, 4, 5} s = s1 ^ s2 ...

    java8 集合求差集、并集、交集的实例

    下面小编就为大家分享一篇java8 集合求差集、并集、交集的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    java求集合的并集、交集、补集、差集和对称差集

    写得比较简单,随便看看就好 该代码是离散数学的一些简单运算

    java工具类集合

    Java工具类集合是Java开发中不可或缺的一部分,它们提供了一系列便捷的方法,帮助开发者高效地处理各种常见任务。在Java中,工具类通常被组织在各种包下,如`java.util`、`java.lang`、`java.io`等。下面将详细介绍...

    java单链表集合的包含运算

    单链表的插入,删除,排序!集合的并、交和差运算 编制一个能演示执行集合的并、交和差...vc mfc编的 集合运算 交并补差 包含...采用有序单链表表示集合

    Java计算交集,差集,并集的方法示例

    主要介绍了Java计算交集,差集,并集的方法,结合实例形式简单分析了java集合运算的简单操作技巧,需要的朋友可以参考下

    3_求差集_

    在实际编程中,处理集合操作通常涉及使用特定的数据结构,如Python中的`set`类型,Java中的`HashSet`,或者C++中的`std::set`。以下是一个简单的Python示例,演示如何计算两个集合的差集: ```python # 假设集合A和...

    ACM资料字符串处理并差集

    并差集是指两个集合的并集和差集的操作。并集是指两个集合的所有元素的集合,而差集是指两个集合中元素的差异。并差集的操作可以用于解决各种计算机问题,如字符串处理、数据挖掘、机器学习等。 三、最长上升子序列...

    集合交并差

    因此,理解并熟练运用集合的交并差操作对于提高代码质量和运行效率至关重要。 在提供的"集合的并交差.TXT"文件中,很可能包含了关于如何实现这些集合操作的示例代码或进一步的解释。通过阅读和学习这个文件,你将...

    java中关于集合的操作

    - **并集、交集、差集**:`union()`, `intersection()`, `difference()`分别对应集合的并、交、差操作。 6. **泛型**: 泛型允许在集合中声明和使用特定类型的元素,提高代码安全性和可读性。 7. **并发集合**:...

    实验一集合交并差.zip

    实验标题为"实验一集合交并差.zip",暗示我们将通过实际操作来理解这些概念,并在Visual Studio(VS)环境下进行编程实现。标签"se"可能指的是软件工程或者相关课程的简称。 首先,让我们定义集合的基本概念。集合...

    JAVA获取两个数据量较大的ArrayList的交集、差集以及并集

    JAVA获取两个数据量较大的ArrayList的交集、差集以及并集,记录一下以便查阅。JAVA获取两个数据量较大的ArrayList的交集、差集以及并集,记录一下以便查阅。JAVA获取两个数据量较大的ArrayList的交集、差集以及并集...

    《B类题目:集合的交并差补》.rar

    以上就是在 Java 中实现集合交并差补的基本方法。在实际编程中,根据具体需求,我们可能还需要考虑集合操作的效率、是否保留原始集合以及是否允许重复元素等问题。对于更复杂的数据结构和操作,可以利用 Java 集合...

    Java 数组差集实例代码

    这个例子展示了如何使用Java集合框架中的ArrayList类进行基本的集合操作,如查找差集。`removeAll()`方法是实现这一功能的关键,它允许我们高效地移除列表中的元素。需要注意的是,`removeAll()`方法会改变原始列表...

    java集合的运算.pdf

    Java集合的运算是Java程序设计课程的一个重要实验报告课题,涉及到集合的交、并、差运算。本资源摘要信息将对该实验报告的主要内容进行总结和分析。 一、实验要求 实验要求使用Java语言实现两个集合的交、并、差...

    取差集结果demo算法测试

    首先,集合差集(Difference Set)是指在一个集合中存在,但在另一个集合中不存在的所有元素组成的集合。在数学符号中,如果集合A和B是两个不相交的集合,那么差集A-B表示所有属于A但不属于B的元素。在Java中,可以...

    Java 集合框架+集合实例

    Java集合框架为开发者提供了强大的工具,无论是存储简单数据结构还是处理复杂的数据操作,都能找到合适的数据结构和算法。通过熟练掌握集合框架,可以提高代码的效率和可维护性,是Java开发者的必备技能。

    整数集合类的各种操作

    本篇文章将深入探讨如何实现整数集合的各种操作,包括集合的交、并、补等操作,并对代码的美化进行简要介绍。 首先,让我们了解一下基本的集合操作: 1. **添加元素**:使用`add()`方法向集合中添加一个整数。如果...

    Java集合并交差运算[汇编].pdf

    本文件主要涉及的是如何使用Java语言实现单链表的基础操作以及集合的交、并和差运算。下面将详细阐述这些知识点。 首先,单链表是一种基本的数据结构,由一系列节点组成,每个节点包含数据域和指向下一个节点的引用...

Global site tag (gtag.js) - Google Analytics