java 并交集运算

  在面试的过程中,忘记了List中还可以进行交并集运算,这也是常见的数据问题啊,这也是常见的数据结构问题---集合,面试的过程中一直没有想到这种数据结构

  java中API中已经集成了并交集的运算。

  代码:(from http://pengyan5945.iteye.com/blog/1311597)

  交集的API:使用retainAll即可

  并集的API:先removeAll 再addAll

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class ListTest {
    public static void main(String[] args) {
         testIntersection();
         testUnion();
         testIntersectionSet();
    }
    private static void testIntersection() {
         List<String> list1 = new ArrayList<String>();
         List<String> list2 = new ArrayList<String>();
         list1.add("abc");  list2.add("abc");
         list1.add("123");  list2.add("123");
         list1.add("ABC");
         list2.add("XYZ");
         list1.removeAll(list2);
         list1.addAll(list2);
         System.out.println("并集元素个数是:" + list1.size());      

    }
    private static void testIntersectionSet() {
         List<String> list1 = new ArrayList<String>();
         List<String> list2 = new ArrayList<String>();
         list1.add("abc");  list2.add("abc");
         list1.add("123");  list2.add("123");
         list1.add("ABC");
         list2.add("XYZ");
         Set<String> set =new HashSet<String>();
         addList2Set(set, list1);
         addList2Set(set, list2);
         System.out.println("并集元素个数是:" + set.size());      

    }
    private static void testUnion() {
         List<String> list1 = new ArrayList<String>();
         List<String> list2 = new ArrayList<String>();
         list1.add("abc");  list2.add("abc");
         list1.add("123");  list2.add("123");
         list1.add("ABC");
         list2.add("XYZ");
         list1.retainAll(list2);
         System.out.println("交集元素个数是:"+list1.size());
    }
    private static void addList2Set(Set<String> set,List<String> list){
        for (String str : list) {
            set.add(str);
        }
    }
}

时间: 2024-10-26 04:38:56

java 并交集运算的相关文章

Java语法基础--运算

常量是一些不变的数据,我们用变量的方式把常量给记录下来,变量是内存中一个空间,空间中可以存储某些类型的数据,变量还有一个好处,就是可以给一些常量取名称,方便阅读: 取模运算 就是取余数.模2运算,非0即1,用于切换. -3%6结果是-3 . 3%-6结果是3 . 负数运算参考左边符号. 对于除号"/",它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分. 例如:int x=3510;x=x/1000*1000;  x的结果是3. 自增运算 ++ int a=3

hdu4927 Series 1(组合+公式 Java大数高精度运算)

题目链接: Series 1 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 423    Accepted Submission(s): 146 Problem Description Let A be an integral series {A1, A2, . . . , An}. The zero-order series o

java中变量运算细节 (2)

/* 目的:测试变量的运算方式 结果:byte a, b, c; a = b+c; 或者 a = b+10 形如这种形式的算式, 等式的右边的运算结果默认的都是int型的!因为等式右边有变量, 编译器无法确定变量的内容 ,因为它是变量!所以相加之后得到的int再默认强制转换成byte可能会损失精度. 而形如 a=4+5:这种常量的赋值,虽然 4 和 5 都默认的是int, 但都是常量,它们的值是确定的!所以如果 4+5的值超过了 byte的最大值的范围, 那就会编译出错!(也就是等式右边都是常量

Java学习:运算、运算符、操作数、表达式

运算:对常量和变量进行操作的过程称为运算. 操作数:参与运算的常量或者变量称为操作数. 运算符:对常量和变量进行操作的符号称为运算符. 算术运算符:+.-.*./.%.++.-- /和%的区别? /:除法,得到商 符号相同为正,不同为负 %:除法,得到余数 符号和第一个操作数相同 %的应用: x%3 等于 0 说明x能被3整除 x%2 等1 说明x是奇数  等0 说明x是偶数 ++,--运算符 作用:++就是加1,--就是减1. 自增自减运算符 ++,--在运算的时候,可以放在操作数的前面,也可

java 取交集方法retainAll

java 取交集方法retainAll 有两个集合newCoures和oldCourses,判断这两个集合是否包含相同的对象或元素, 可以使用retainAll方法:oldCourses.retainAll(newCoures). 如果存在相同元素,oldCourses中仅保留相同的元素. 如果不存在相同元素,oldCourse会变为空. 如果有多个集合oldCourses1.oldCourses2.oldCourses3等,分别与newCourses比较,应该将newCourses统一放在后面

关于java按位操作运算

<1>.在了解位移之前,先了解一下正数和负数的二进制表示形式以及关系:举例15和-15: 15 的原码: 00000000 00000000 00000000 00001111     补码: 11111111 11111111 11111111 11110000                 +1 = -15的原码:11111111 11111111 11111111 11110001 负数的原码即为:正数的原码取反,再加1. <2>位移操作:(只针对 int类型的数据有效,j

Java三目运算

Java的三目运算符: (表达式A)?(表达式B):(表达式C) 原理为:如果表达式A的结果为true,那么这句的运行结果为表达式B:如果为false,那么结果为表达式C 例如:(1>0)?(a=5):(a=6) 那么这句话的运行结果为a=6 开发中经常会遇到这样的问题,利用起三目运算来挺不错的.如果不用的话也可以实现 if(1>0){ a=5; } else{ a=6; } 当然还是三目简单.... 版权声明:本文为博主原创文章,未经博主允许不得转载.

JAVA 通过位运算进行简单的加密

我们可以通过一个简单的位运算进行简单的加密 import java.util.Scanner; public class Example{ public static void main(String[]args){ Scanner input = new Scanner(System.in); System.out.println("请输入一个英文字符或解密字符串"); //获取用户输入的字符 String password = scan.nextLine(); //使用String

Java数据类型及运算

(一),Java基本类型及运算 注释:可以用于生成API: 命令如:javadoc -d apidoc windowtitle hhh -doctitle aaa  -header bbbb -version -author *HelloWorld.java 注意点: 1,标识符只能是字母,数字,下划线和$,其中数字不能作为开头 2,基本类型:1个字节对应于计算机的8位二进制,计算机以补码的形式存取整数,即正数的补码为其本身,而负数的补码为其反码(处最高位,其余位取反)然后加一 3,类型装换:小