在实现数据挖掘一些算法或者是利用空间向量模型来发现相似文档的时候,会遇到求两个集合的交集的情况。以前一般是采用比较笨拙的办法,依次遍历其中一个集合的元素,然后判断它是否包含在另一个集合中。这样做非常机械繁琐,代码编得让人心烦,其实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
分享到:
相关推荐
Java-Java集合体系-List-Set 内容概要:总结了Java集体体系中的三大集合接口LIst、Set、Map,本文对LIst、Set做出了详细、简要的分析,没有冗长的文章,全是干货,下载即用,其中涉及了其底层实现,面试题必备。 ...
Java 第二阶段提升编程能力【集合】---- 代码 Java 第二阶段提升编程能力【集合】---- 代码 Java 第二阶段提升编程能力【集合】---- 代码 Java 第二阶段提升编程能力【集合】---- 代码 Java 第二阶段提升编程能力...
mysql-connector-java-5.1.40.zip和mysql-connector-java-5.1.10.jar
java操作kettle(pdi-ce-8.2.0.0-342)的job、transf 使用的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-8.0.22.jar包含mysql-connector-java-...
java集合类知识总结--思维导图文件xmind xmind文件类型 总结了java常用集合相关问题 包括map、set、list、数组等
java代码-java使用AES加密解密 AES-128-ECB加密 ——学习参考资料:仅用于个人学习使用
安装包:java-7-openjdk-amd64.tar.gz 使用方法 1. 拷贝至服务器/个人电脑 2. 解包 mkdir /opt/jdk/ tar -zxvf java-7-openjdk-amd64.tar.gz -C /opt/jdk/ 3. 配置编译环境 JAVA_HOME=/opt/jdk/java-7-openjdk-amd...
Xuggle视频分析Demo,java操作摄像头项目,含有xuggle-xuggler-5.4.jar
selenium-java-2.44.0.jar selenium-java-2.44.0-srcs.jar selenium-server-standalone-2.44.0.jar
将要使用的是mysql-connector-java-5.1.30-bin-g.jar和mysql-connector-java-5.1.30-bin.jar 配置 在C:\Program Files\Java目录下建立mysqlforjdbc子目录,进入该目录将mysql-connector-java-5.1.30-bin.jar到该...
java集合类list-set-map.doc
Sun官方提供的纯Java的SIP开发包(JAIN-SIP-API-1.2.jar) 提供黑莓(Blackberry),塞班(Symbian)等移动平台的SIP开发。
java代码-使用java解决文件操作--复制文件的问题的源代码 ——学习参考资料:仅用于个人学习使用!
java jvm 参数 -Xms -Xmx -Xmn -Xss -
mysql57驱动jar包,jar包...mysql-connector-java是一款由mysql推出的官方驱动,它是java通过JDBC连接操作mysql的驱动,解压之后是jar包,需安装Java环境方可使用。需要mysql connector java的朋友们可以前来下载使用。
java 集合脑图-自己整理的
mysql-connector-java-3.0.16-ga-bin.jar 连接mysql的java包
taobao-sdk-java-auto.jar工具类,taobao-sdk-java-auto.jar工具类
Java 实例 - 集合反转源代码-详细教程.zip