`
zhenping
  • 浏览: 79738 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

比较两个List元素是否相同,查找出两个list的不同元素

 
阅读更多

比较两个List元素是否相同

/** <Description functions in a word>
	 * <Detail description>
	 * @param <T>
	 * @param a
	 * @param b
	 * @return [Parameters description]
	 * 
	 * @return boolean [Return type description]
	 * @exception throws [Excetion] [Exception description]
	 * @see [Related classes#Related methods#Related properties]
	 */
	public synchronized <T extends Comparable<T>> boolean compare(List<T> a, List<T> b) {
		if(a.size() != b.size())
			return false;
		Collections.sort(a);
		Collections.sort(b);
		for(int i=0;i<a.size();i++){
			if(!a.get(i).equals(b.get(i)))
				return false;
		}
		return true;
	}

查找出两个list的不同元素

public List<String> getDiffElementUseMap(List<String> list1,List<String> list2){  //获得两个list中的不同元素,map方法 
	final Integer flagUnique = 1;//无重复字符串的键值
    	log.info("====Start   getDiffElementUseMap ====================="+new Date());
        long runtime = System.nanoTime();//开始计时  
        //利用map中不能有重复元素的特点  
        Map<String, Integer> map = new HashMap<String,Integer>(list1.size()+ list2.size());  
        List<String> diffList = new ArrayList<String>();//用于保存两个list中不同的元素  
        for (String string : list1) {  
            map.put(string,flagUnique);//先将list1中元素复制到map中保存  
        }  
		for (String string : list2) {
			Integer key = map.get(string);// 获得键值
			if (key != null) {// 如果map中已经存在该元素,说明list1中存在该元素,那么将其key加1
				map.put(string, ++key);
				continue;
			} else {// 如果不存在,则放入map中
				map.put(string, flagUnique);
			}
		}
		for (Map.Entry<String, Integer> entry : map.entrySet()) {
			if (entry.getValue() == flagUnique)// 在map中,键值为flagUnique的元素即为无重复的元素
			{
				diffList.add(entry.getKey());
			}
		}
		log.info("getDiffElementUseMap run time:"
				+ (System.nanoTime() - runtime));
        log.info("====End    getDiffElementUseMap ====================="+new Date());
        return diffList;  
    }


分享到:
评论

相关推荐

    SpringBoot_Freemarker生成Word_多个表格+两层嵌套循环

    (userList是集合在dataMap中的key, user是集合中的每个元素, 类似&lt;c:forEach items='userList' var='user'&gt;), 如图: PLUS:若表格之外还有嵌套的循环,也需要用&lt;#list table as map&gt;&lt;/#list&gt;,注意这里的&lt;#list&gt;...

    对python中list的五种查找方法说明

    Python中是有查找功能的,五种方式:in、not in、count、index,find 前两种方法是保留字,后两种方式是列表的方法。 下面以a_list = [‘a’,’b’,’c’,’hello’],为例作介绍: string类型的话可用find方法去...

    database 源代码list.cpp

    (1)输入一组整型元素序列,建立顺序表。 (2)实现该顺序表的遍历。 (3)在该顺序表中顺序查找某一元素,查找成功...(7)利用算法6建立两个非递减有序表并把它们合并成一个非递减有序表。 (8)编写一个主函数,调试上述算法。

    求2个集合的交集

    对于给定的两个集合,使用哈希表可以在线性时间复杂度内得到他们的交集和并集,具体说明如下: 假设有集合A={1, 7, 5, 13, 9, 10, 11}, B={5, 7, 10, 1, 18, 12}, 1)求交集,需要得到结果:A∩B={1, 5, 7,10} 思路...

    List、Set、Map的特点及遍历方法

    List、Set、MapList与Set集合的区别List、Map、Set三个接口,存取元素时,各有什么特点SetListMapList、Set、Map遍历的实现先来个Employee实体类List遍历的三种方式Set遍历的两种方式Map的几种遍历 List与Set集合的...

    顺序存储的线性表基本算法实现

    构造一个空的顺序表InitList_Sq; 初始化一个顺序表,将顺序表所有元素置为0 SetList_Sq 建立顺序表,给表中各元素赋值SetList_Sq ...合并两个顺序表,即将一个顺序表接在另一个顺序表之后Append_Sq

    测量程序编制 - python 50数据类型:Set(集合)-差集.pptx

    set1 -- 必需,要查找相同元素的集合 set2 -- 必需,可以是任何序列,可以多个,多个使用逗号 , 隔开 若是字典,按键比较 返回值:返回一个新的集合 set1={1,2,3} set2={3,4,5,2} list1=[2,3] dict1={2:9,'b':10} ...

    c语言数据结构算法演示(Windows版)

    (5)归并两个有序链表(MergeList_L) (6)两个有序链表求交(ListIntersection_L) (7)两个有序链表求差(SubList_L) 3. 栈和队列 (1)计算阿克曼函数(AckMan) (2)栈的输出序列(Gen、Perform) (3)递归...

    python如何将两个txt文件内容合并

    分析: 先分别将两个文件中的内容读入列表中,再将列表分割 把不同属性的数据放到单独的列表中 分开存储 name tel email 然后遍历列表查找重合的姓名. 利用字符串方法join() 将 三个属性合并,然后保存在临时列表 ...

    在java List中进行模糊查询的实现方法

    下面小编就为大家带来一篇在java List中进行模糊查询的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    测量程序编制 - python 48数据类型:Set(集合)-交集.pptx

    Set(集合)——交集 ...set1 -- 必需,要查找相同元素的集合 set2 -- 可选,可以是任何序列,可以多个,多个使用逗号 , 隔开 若是字典,按键比较 返回值:返回一个新的集合 set1={1,2,3} set2={3,4,5,2} list1=

    java源码包2

    两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将...

    welcome-file-list 与SpringMvc 的 DispatcherServlet

    在SpringMVC中 所有的请求都由dispatcherServlet处理(url-pattern配置的是/),当配置文件中有对静态资源的处理  时候 ,先匹配 welcome-file-list 中的文件,依次查找,找到了就 返回,如果没有找到就继续匹配到...

    板块一 顺序表的操作.zip

    从键盘输入需插入元素的位置,然后使用if(L-&gt;length&gt;=L-&gt;listsize)语句判断是否超出元素原有个数,如超出,则再重新开辟一个新的空间,直接在最后面插入新的元素,如不超出,后面的元素依次后移一位,再插入元素。...

    Java面试题,冲冲冲!.rar

    List、Set、Queue和Map是Java集合框架中的四个主要接口,它们各自具有不同的特点和用途。 1. List(列表): - 允许重复元素。 - 具有按照元素插入顺序维护的有序集合。 - 可以通过索引访问和操作元素。 - 常见实现类...

    数据结构:八大数据结构分析.pdf

    线性表(linear list)是数据结构的⼀种,线性表就是数据排列成⼀条先⼀样的结 构,每个线性表上的数据最多只有前和后两个⽅向。⼀个线性表是n个具有相同特性的数据元素的有限序列。 特点: 1. 集合中必存在唯⼀的⼀...

    Python要求O(n)复杂度求无序列表中第K的大元素实例

    昨天面试上来就是一个算法,平时基本的算法还行,结果变个法就不会了。。。感觉应该刷一波Leecode冷静下。...举个例子说明下步骤,比如有列表test_list=[6,5,4,3,2,1],找出第3大的元素,就是4, 如

    测量程序编制 - python 51数据类型:Set(集合)-对称差集.pptx

    set1 -- 必需,要查找相同元素的集合,可以是任何序列 若是字典,按键比较 返回值:返回一个新的集合 set1={1,2,3} set2={3,4,5,2} list1=[2,3] dict1={2:9,'b':10} set3=set1.symmetric_difference(set2) print

    Python经典面试题 Python常见面试考试题目整理总结 Python面试题手册 共15页.pdf

    Python经典面试题 Python常见面试...15:有两个序列 a,b,大小都为 n,序列元素的值任意整形数,无序;要求:通过交换 a,b 中的元素,使[序列 a 元素的和]与[序列 b 元素的和]之间的差最小 16:用 Python 匹配 HTML tag

    folderlist-tool:Windows powershell脚本,用于在文件目录中生成基本元数据以用于存档描述

    一个简单的文件夹列表,列出了文件夹的前两个级别,包括它们的大小和文件数。然后可以将列表从屏幕上复制并粘贴到归档查找辅助工具中的范围/内容或布置说明中。 [使用-list选项] 具有标记为EAD组件的文件夹列表(前...

Global site tag (gtag.js) - Google Analytics