在实现数据挖掘一些算法或者是利用空间向量模型来发现相似文档的时候,会遇到求两个集合的交集的情况。以前一般是采用比较笨拙的办法,依次遍历其中一个集合的元素,然后判断它是否包含在另一个集合中。这样做非常机械繁琐,代码编得让人心烦,其实java的api中提供了对集合进行交、并、差运算的功能,灰常强大!看下面的例子:
- public class SetOpt {
-
- public List intersect(List ls, List ls2) {
- List list = new ArrayList(Arrays.asList(new Object[ls.size()]));
- Collections.copy(list, ls);
- list.retainAll(ls2);
- return list;
- }
-
- public List union(List ls, List ls2) {
- List list = new ArrayList(Arrays.asList(new Object[ls.size()]));
- Collections.copy(list, ls);
- list.addAll(ls2);
- return list;
- }
-
- public List diff(List ls, List ls2) {
- List list = new ArrayList(Arrays.asList(new Object[ls.size()]));
- Collections.copy(list, ls);
- list.removeAll(ls2);
- return list;
- }
- public static void main(String[] args) {
- SetOpt opt = new SetOpt();
- List l1 = new ArrayList();
- l1.add(1);
- l1.add(2);
- l1.add(3);
- l1.add(4);
- List l2 = new ArrayList();
- l2.add(3);
- l2.add(4);
- l2.add(5);
- l2.add(6);
- List intersectList = opt.intersect(l1, l2);
- System.out.println("交集:");
- for (int i = 0; i < intersectList.size(); i++) {
- System.out.print(intersectList.get(i) + " ");
- }
- System.out.println();
- List unionList = opt.union(l1, l2);
- System.out.println("并集:");
- for (int i = 0; i < unionList.size(); i++) {
- System.out.print(unionList.get(i) + " ");
- }
- System.out.println();
- List diffList = opt.diff(l1, l2);
- System.out.println("差集:");
- for (int i = 0; i < diffList.size(); i++) {
- System.out.print(diffList.get(i) + " ");
- }
- System.out.println();
- }
-
- }
测试结果:
交集:
3 4
并集:
1 2 3 4 3 4 5 6
差集:
1 2
注意:在进行两个集合(操作集合和被操作集合)交、并、差操作时,一定要先将操作集合拷贝一份,以拷贝的集合作为操作集合来进行运算。否则,将改变原来操作集合的内容
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/luowen3405/archive/2011/04/18/6331763.aspx
个人补充:
两个集合去除重复元素,(a差b)并(b差a)并(a交b) 。
分享到:
相关推荐
在实际开发中,你可以将`mysql-connector-java-5.1.10.jar`添加到项目的类路径(classpath)中,或者在Maven或Gradle等构建工具的依赖管理中指定对应的版本,以确保Java应用能够找到并使用这个驱动。 总结,`mysql-...
Java 第二阶段提升编程能力【集合】---- 代码 Java 第二阶段提升编程能力【集合】---- 代码 Java 第二阶段提升编程能力【集合】---- 代码 Java 第二阶段提升编程能力【集合】---- 代码 Java 第二阶段提升编程能力...
包含mysql-connector-java-8.0.22.jar包含mysql-connector-java-8.0.22.jar包含mysql-connector-java-8.0.22.jar包含mysql-connector-java-8.0.22.jar包含mysql-connector-java-8.0.22.jar包含mysql-connector-java-...
Java JDK 8u51是Oracle公司发布的一个针对Windows x64操作系统的64位Java开发工具包。这个版本在2015年7月20日被标记为最新的,对于开发者来说,它是构建和运行Java应用程序的基础。下面将详细阐述Java JDK 8u51的...
JavaCV(Java Computer Vision)是一个开源的计算机视觉库,它为Java和Android提供了对各种流行的计算机视觉库的访问,如OpenCV、FFmpeg、Face_recognition等。在本例中,我们关注的是`javacv-platform-1.3-bin.zip`...
3. **流(Stream API)**:Stream API是Java 8为了处理集合数据而引入的新概念,它提供了一种声明式处理数据的方式,支持并行操作,从而增强了集合处理的效率。 4. **日期和时间API的改进**:Java 8用新的`java....
在实际使用中,开发人员通常会将`selenium-java-2.44.0.jar` 添加到他们的项目类路径中,以便调用WebDriver API进行测试。同时,如果需要进行分布式测试,他们会启动`selenium-server-standalone-2.44.0.jar`,并在...
java集合类知识总结--思维导图文件xmind xmind文件类型 总结了java常用集合相关问题 包括map、set、list、数组等
MySQL是世界上最受欢迎的关系型数据库管理系统之一,而`mysql-connector-java-5.1.30`是MySQL官方为Java开发者提供的数据库连接驱动包。这个驱动包使得Java应用程序能够与MySQL数据库进行无缝通信,执行SQL查询,...
Java集合框架是Java编程语言中一个非常重要的组成部分,它提供了数据结构和算法的实现,使得在处理对象集合时更加高效和灵活。Java集合教程通常会涵盖以下关键知识点: 1. **集合接口**: - `Collection`:这是...
不需要关心接受的字符串编码是UTF_8还是GBK,还是ios-8859-1,自动转换为utf-8编码格式,无需判断字符串原有编码,用法://处理编码String newStr = GetEncode.transcode(oldStr);
Java JDK包含了许多组件,其中最重要的是Java编译器(javac)、Java解释器(java)、Java虚拟机(JVM)以及Java类库,这些使得开发者能够编写、编译、调试和运行Java应用程序。 1. **Java编译器** (javac): 它将源...
1. **下载**:从官方或者第三方源获取`java-8-openjdk-amd64.tar.gz`压缩包。 2. **解压**:使用`tar`命令解压文件到指定目录。 3. **配置环境变量**:修改`~/.bashrc`或`~/.bash_profile`文件,添加`JAVA_HOME`、`...
在Java编程语言中,集合是存储和操作对象的主要方式。这个详细教程主要关注的是如何比较不同的集合,这对于理解和优化程序中的数据处理至关重要。本教程通过源代码实例,深入讲解了Java集合框架中不同类型的集合(如...
MySQL Connector/J 8.0.29 是MySQL数据库与Java应用程序之间通信的重要桥梁,它是一个实现了Java Database Connectivity (JDBC) API的驱动程序,使得Java开发者能够方便地在Java应用中连接并操作MySQL数据库。...
Java JDK 1.8是Java开发工具包的一个重要版本,主要针对Windows x64操作系统设计。JDK(Java Development Kit)是开发和运行Java应用程序所必需的软件集合,包括Java编译器、Java运行环境、类库以及各种工具。在这个...
MySQL是世界上最流行的开源关系型数据库管理系统之一,而`mysql-connector-java-5.1.7.jar`是MySQL官方为了使得Java应用程序能够连接到MySQL数据库而提供的JDBC(Java Database Connectivity)驱动程序。JDBC是Java...
集合是Java编程语言中用于存储、管理和操作数据的一种重要工具。它提供了多种数据结构来适应不同的应用场景,从而有效地提高程序开发效率。从数据结构的角度来看,集合可以视为对数组进行的一种高级封装。 **1. ...
总之,`mysql-connector-java-5.1.22-bin.jar`是Java开发者在使用MySQL数据库时不可或缺的组件,它简化了数据库操作,使Java应用程序能够方便地与MySQL进行数据交互。正确地引入和使用这个驱动,可以大大提高开发...
使用"mysql-connector-java-5.1.7-bin.jar"时,需要将其添加到Java项目的类路径中。这可以通过多种方式实现,例如在IDE(如Eclipse或IntelliJ IDEA)中设置库依赖,或者在命令行运行Java程序时使用`-cp`或`-...