0 0

List与List比较的问题5

    List biglist;
    List smalllist;

两个List
smalllist是biglist的子集
怎么比较List里面存的对象相同呢?
大家说一说方便一点的方法?
谢谢
问题补充:
我想确认的是把LIST中相同的找出来
smalllist是大LIST的子集
2008年11月10日 14:36

13个答案 按时间排序 按投票排序

0 0

采纳的答案

org.apache.commons.collections.CollectionUtils工具类

CollectionUtils.isEqualCollection(biglist,smalllist)

2008年11月10日 14:43
0 0

import java.util.List;
import java.util.ArrayList;

public class Test {

	public static void main(String[] args) {

		List bigList = new ArrayList();
		bigList.add(new Integer(1));
		bigList.add(new Integer(2));
		bigList.add(new Integer(3));

		List smallList = new ArrayList();
		smallList.add(new Integer(1));
		smallList.add(new Integer(3));

		if (bigList.containsAll(smallList))
			System.out.println("smallList is a subset of bigList");
		else
			System.out.println("smallList is not a subset of bigList");

		smallList.add(new Integer(4));

		if (bigList.containsAll(smallList))
			System.out.println("smallList is a subset of bigList");
		else
			System.out.println("smallList is not a subset of bigList");

	}
}


下面是containAll的实现:
public boolean containsAll(Collection<?> c) {
	Iterator<?> e = c.iterator();
	while (e.hasNext())
	    if(!contains(e.next()))
		return false;
	return true;
    }

2008年11月10日 16:43
0 0

如果注重效率的话,不能使用两次循环的方法。
这是肯定的,如果碰到两次循环、三次循环它的复杂度是O(M*N)、O(M*N*P)
所以最好的方法是把二次循环变成两个一次循环,这样效率上会大大提升

2008年11月10日 16:16
0 0

如果是这样的话,比较快的方法就是先把两个List中的元素排序

然后将smallList中的元素与bigList中的元素进行比较

因为按照数据结构的说法,查找有序队列是最快的

2008年11月10日 15:52
0 0

可以这样:

 //不考虑元素顺序是否相同  
 public static List getSameElement(List a,List b){  
         List sameElementList = null;
         for(Object tem : a){  
             if(b.contains(tem)){//包含tem元素  
                 if(sameElementList == null){
                   sameElementList = new ArrayList();
                 }
                 sameElementList.add(tem);
             }  
         }  
         return sameElementList ;  
     }  

2008年11月10日 15:35
0 0

smalllist都是大LIST的子集,当然相同的部分就是smalllist了

2008年11月10日 15:33
0 0

list的equals方法是被重写过的,先比较两个list的长度,在比较对应的元素,用的是equals方法

2008年11月10日 14:52
0 0

楼主是不是想问怎么确认smalllist是不是biglist的子集?

biglist.containsAll(smalllist)

2008年11月10日 14:50
0 0

另外list的equals方法就可以比较

2008年11月10日 14:50
0 0

List a ;
for(int i=0;i<biglist.size();i++){
   for(int j=0;j<smalllist.size();j++){
       if(==){
          a.add(***);
        }
    }
}

最简单的

2008年11月10日 14:45
0 0

都子集了,还怎么相等?长度不同的两个List是不相等的

2008年11月10日 14:44
0 0

List本身就包含一个取交集的方法..retainAll(Collection<?> c)
这个方法会保存仅在列表中保留指定 collection 中所包含的元素

2008年11月10日 14:43
0 0

写一个静态方法,随处可以使用:

	
//不考虑元素顺序是否相同
public static boolean isSame(List a,List b){
		if(a.size() != b.size()){
			return false;//先比较个数
		}
		for(Object tem : a){
			if(!b.contains(tem)){//不包含tem元素
				return false;
			}
		}
		return true;
	}


2008年11月10日 14:43

相关推荐

    list 元素循环比较

    list 元素循环比较list 元素循环比较list 元素循环比较list 元素循环比较list 元素循环比较list 元素循环比较

    list to list 将list内容移到另一个list

    在编程领域,特别是涉及到数据操作的时候,`list` 是一种常用的数据结构,它在Python、JavaScript等语言中广泛使用。`list to list` 操作通常指的是将一个列表(list)的内容移动到另一个列表中,这可能涉及到列表的...

    CSharp_List.zip_C# list_C#中list_C#中list的用法_C#怎么引用List_c# list

    如果T是可比较的类型(如int, string等),可以使用`Sort`方法对列表进行排序: ```csharp numbers.Sort(); // 默认升序排序 ``` **10. 反转List&lt;T&gt;:** 使用`Reverse`方法反转列表中的元素顺序: ```csharp ...

    两个list比较 取不同的对象

    2. **比较与去除重复项**: - 使用双重循环来逐个比较两个列表中的元素。 - 如果发现两个列表中有相同的`Student`对象,则从第一个列表中移除该对象。 - 移除后需要更新循环变量,以避免遗漏元素。 3. **使用`...

    list嵌套list例子

    在Python编程语言中,列表(list)是一种非常重要的数据结构,它可以存储任意类型的对象,包括数字、字符串,甚至是其他列表。当我们谈论“list嵌套list”时,这意味着在一个列表内部包含了一个或多个列表,这样的...

    List转换为List

    本知识点重点讲解将List转换为List的过程,这在进行Web开发、数据处理以及与前端交互等场景中非常常见。同时,也会涉及List转换为List及list转换为JsonArray的内容。 ### List转换为List 在Java中,Bean通常指的是...

    C语言头文件 LIST C语言头文件 LIST

    C语言头文件 LISTC语言头文件 LISTC语言头文件 LISTC语言头文件 LISTC语言头文件 LISTC语言头文件 LISTC语言头文件 LISTC语言头文件 LISTC语言头文件 LISTC语言头文件 LISTC语言头文件 LISTC语言头文件 LISTC语言...

    Spring MVC不能直接接收list类型参数的问题

    ### Spring MVC 无法直接接收 List 类型参数的问题详解 #### 问题背景 在 Web 开发过程中,前后端数据交互是必不可少的一部分。对于基于 Java 的 Spring MVC 框架而言,处理这种交互通常需要理解如何正确地接收前端...

    关于Java中List对象的分页思想-按10个或者n个数对list进行分组

    List对象的分页思想是一种常用的数据处理技术,通过将一个大的List对象分割成多个小的List对象,每个小的List对象包含一定数量的元素,可以用于解决大规模数据的处理问题,例如批量处理、数据分页等。 Java中List...

    浅谈C#中ListT对象的深度拷贝问题

    一、List对象中的T是值类型的情况(int 类型等) 对于值类型的List直接用以下方法就可以复制: List&lt;T&gt; oldList = new List(); oldList.Add(..); List&lt;T&gt; newList = new List(oldList); 二、List对象中的T是引用...

    Scala的List类方法整合

    此方法用于比较两个对象是否相等。 **示例代码:** ```scala val list1 = List(1, 2, 3) val list2 = List(1, 2, 3) val equalLists = list1.equals(list2) // 结果为 true ``` #### 16. `def exists(p: (A) =&gt; ...

    将一个比较大的list分割为多个小的list

    将一个比较大的list分割为多个小的list,可以解决mybatis批量插⼊数据list超过⼀定长度时报错的解决办法

    delphi Tlist使用方法举例

    `TlistStudy.identcache` 和 `TlistStudy.dproj.local` 是Delphi项目的配置和状态文件,它们通常不直接与 `TList` 的使用有关,而是帮助编译器和IDE保持项目配置和本地状态。 `TlistStudy.exe` 是最终生成的应用...

    C#List集合分组winform把List分组

    在.NET框架中,C#是一种常用的编程语言,...总的来说,理解和熟练掌握C#的List和Linq的分组与筛选功能,对于开发高效且易维护的WinForm应用至关重要。通过正确地组织和操作数据,可以极大地提升用户体验和开发效率。

    java 数组转list list转数组 list数组互转

    java 数组转list list转数组 list数组互转 java8 代码示例

    SharedPreferences存取list集合

    此外,虽然这种方式可以解决临时存储List的问题,但它并不适合大量或频繁的数据操作,因为SharedPreferences不是设计来处理复杂数据结构的。对于复杂数据存储,推荐使用SQLite数据库或者Room库,或者使用现代的云...

    Java将2个List集合合并到一个List里面并排序工具类

    Java将2个List集合合并到一个List里面并排序工具类 1、Java编程资源,定义了一个名为`ListMerger`的工具类,主要包含一个名为`mergeAndSortLists`的静态方法。此方法用于将两个已经根据... 6、有任何问题可私信博主。

    Alist安装包+快速启动-停止脚本

    - 文件同步:Alist支持设置定时任务,定期同步网盘与本地目录,确保数据一致性。 - 权限管理:根据需求设置不同网盘目录的访问权限,保护个人隐私。 - 快速搜索:内置搜索引擎可以快速查找网盘中的文件,提高查找...

    C# List实现行转列的通用方案

    private static List&lt;dynamic&gt; DynamicLinq(List&lt;T&gt; list, List&lt;string&gt; DimensionList, string DynamicColumn, out List&lt;string&gt; AllDynamicColumn) where T : class { // ... } ``` 3. DynamicLinq方法的实现 ...

    C语言头文件 LIST.H

    C语言头文件 LIST.HC语言头文件 LIST.HC语言头文件 LIST.HC语言头文件 LIST.HC语言头文件 LIST.HC语言头文件 LIST.HC语言头文件 LIST.HC语言头文件 LIST.HC语言头文件 LIST.HC语言头文件 LIST.HC语言头文件 LIST.HC...

Global site tag (gtag.js) - Google Analytics