`
zhenping
  • 浏览: 83215 次
  • 性别: 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;  
    }


分享到:
评论

相关推荐

    两个集合比较(新增、编辑、删除)

    在两个List中找到相同的元素,但它们的值不同。这需要我们遍历两个List,比较每个元素的值。我们可以创建一个辅助函数来检查元素是否被编辑: ```java public boolean isElementEdited(Object oldElement, Object ...

    基于java8新特性+反射机制实现list不同实体类互转.zip

    例如,如果源实体类有一个`name`字段,目标实体类也有一个`name`字段,我们可以通过反射找到这两个字段并进行赋值。 在实现过程中,我们可以创建一个工具类,如`ListConvertUtil`,并在其中定义静态方法,如`...

    Java判断List中相同值元素的个数实例

    在Java编程中,有时我们需要统计一个List集合中相同值出现的次数。这在处理数据集、分析重复项或进行数据清洗时非常常见。本篇文章将详细介绍如何通过Java实现这一功能,特别是利用Map数据结构来高效地计算List中...

    编写函数,建立一个顺序表并输出,计算该顺序表的长度。 实现在顺序表中查找第i个元素的值。实现在顺序表中第i个位置上插入值为x的

    首先,定义了一个结构体`SqList`用于存储顺序表,包含两个成员:`data`用于存储数据元素的数组,`length`用于记录顺序表的实际长度。接着,通过`InitList`函数初始化顺序表,将其长度设置为0。然后,使用`CreateList...

    list嵌套list例子

    在这个例子中,`nested_list`包含整数和两个子列表,每个子列表也包含整数。 2. 访问嵌套列表的元素: 访问嵌套列表中的元素与访问普通列表类似,只是需要额外的索引层级。比如要获取子列表的第一个元素,可以这样...

    C# list对象FindAll函数的四种写法

    以下是一个简单的例子,定义了一个`Person`类,包含`ID`和`Name`两个属性,并创建了一个`Person`对象的`List`: ```csharp using System.Collections.Generic; public class Person { public int ID { get; set; ...

    List列表拒绝添加重复信息VB6.0源代码.rar

    - List控件有两个主要属性:List和ListIndex。List属性存储列表中的所有项目,而ListIndex则表示当前选中的项的索引。 2. **拒绝添加重复信息**: - 在添加新元素到List控件之前,需要检查该元素是否已存在于列表...

    List和Set使用retainAll方法的比较

    - `ListAndRetainAll.java`:这个示例代码可能会展示一个List对象执行`retainAll`操作的过程,我们可以看到在大量元素的情况下,时间消耗会相对较大。 - `SetAndRetainAll.java`:与此相反,Set对象执行相同的操作...

    Linq两个List集合取交集的实现

    当我们需要找到两个List集合的交集时,LINQ提供了一种简单而高效的方法。这里我们将深入探讨如何使用LINQ实现两个List集合的交集操作。 1、法一:常规方法 首先,我们可以使用`Intersect`方法来获取两个List集合的...

    Python 比较两个数组的元素的异同方法

    这些方法在特定场景下非常有用,例如检查某个元素是否存在于任一列表,或者比较两个列表的元素完全相同等。 总的来说,Python提供了多种灵活的方式来进行列表元素的比较,开发者可以根据实际需求选择合适的方法。...

    Vue监听一个数组id是否与另一个数组id相同的方法

    数据list,结构为[{id:1,…},{id:2,…}],数据shoplist,结构为[{id:1,…},{id:2,…}],判断当shoplist.id等于list.id时显示list的数据。 .vue文件: &lt;button @click=clickButtonShopList&gt;click me&lt;...

    HashMap和链表的查找效率比较

    `List`接口有两个常见的实现类:`ArrayList`和`LinkedList`。`ArrayList`基于动态增长的数组实现,而`LinkedList`则是由双向链表构成。在`ArrayList`中,查找元素需要从头到尾遍历,时间复杂度为O(n);而`LinkedList...

    Python基础教程:两种方法获取list中指定元素的索引.pdf

    如果列表中有多个相同的元素,比如多个3,`index()`只会返回第一个出现3的索引,不会返回所有匹配的索引。 方法二:利用`enumerate()`函数 当需要获取所有匹配元素的索引时,`enumerate()`函数就显得非常有用。`...

    list常用方法

    两个`List`对象相等的条件是它们具有相同的元素并且顺序相同。 ```java boolean hashEquals = list.hashCode() == list2.hashCode(); ``` `hashCode`方法返回`List`对象的哈希码值。如果两个`List`对象通过`equals`...

    A skip list cookbook.

    合并算法的核心思想是将两个列表按顺序排列,并创建新的 Skip list 来包含所有元素。由于 Skip list 的层级是根据概率随机分配的,因此合并后的 Skip list 依然保持良好的平衡性。 **4.3 分割** 分割操作则是将一...

    查找元素的方法.pdf

    例如,如果有多个在不同div中的相同元素,可以先找到父元素,再找到子元素,如`WebElement hello = driver.findElement(By.id("div1")).findElement(By.linkText("hello"))`。 对于需要操作多个相似元素的情况,如...

    C# 有关List&lt;T&gt;的Contains与Equals方法.doc

    例如,如果你有两个列表 `list1` 和 `list2`,你可以使用 `list1.Contains(list2[0])` 来检查 `list1` 是否包含 `list2` 的第一个元素,而 `list1.Equals(list2)` 则会告诉你这两个列表是否完全一致。 在解决编程...

    java获取两个数组中不同数据的方法

    下面给出的`compare`方法实现了这个功能,它接受两个类型为`T`的数组作为参数,返回一个`List&lt;T&gt;`,包含的是在第二个数组`t2`中但不在第一个数组`t1`中的元素。 ```java public static &lt;T&gt; List&lt;T&gt; compare(T[] t1,...

    c# 两个数组比较,将重复部分去掉,返回不重复部分的实现

    在给定的例子中,我们创建了两个List对象,分别命名为Ashuzu和Bshuzu: ```csharp List&lt;string&gt; Ashuzu = new List(); Ashuzu.Add("1"); Ashuzu.Add("2"); Ashuzu.Add("3"); List&lt;string&gt; Bshuzu = new List(); ...

Global site tag (gtag.js) - Google Analytics