在实际的开发中,经常会晕倒这样的问题,有两个List的数据,需要对这两个List的数据进行对比,然后筛选出需要的对象。
例如:财务中的对账,数据源一个是银行日记账(aList),一个是银行对帐单(bList),业务操作就是把两个List里面金额相同的记录筛选掉,剩下金额不相等的。
在实际开发中我目前知道有两个方式(假设两个List各有1000条数据):
1、最简单的就是用双重循环进行比较,虽然简单,但是如果两个List的数据量都很大,那么运行时间将成数量级增长。循环次数为1000*1000
2、把一个List通过循环放入Map中,把需要比较的字段作为Map的Key,然后循环另外一个List,到Map里面去匹配。
for(A a : aList){
map.put(a.amount,a);
}
for(B b : bList){
A a = map.get(b.amount);
if(a==null){
//a==null则说明没有同b匹配的项
}else{
//a!=null则说明匹配上了
}
}
由于在Map中取数非常快,主要的耗时就在业务处理和循环上。循环次数为1000*2
但是第2种方法还是有不足的地方:
1、当比较的值有相同的时候,由于Key必须唯一,所以后面的值会覆盖掉前面的数据
2、当比较的内容比较复杂,或者是多项的时候,就比较难处理
我想在平时开发中大家应该都会遇到这样的问题吧,不知道大家有没有更好的方法来解决这个问题!!
分享到:
相关推荐
本资源提供了List对对象中的属性和TreeMap, String>对键值排序,并针对100w条数据排序,对比List和TreeMap, String>排序的效率。个人认为排序效率对比可以相信,但也可能存在不科学之处,还请高手给与指点,多多包涵...
此外,由于ArrayList内部使用的是object[]数组,所以每次添加或删除元素时,如果超出当前容量,都需要创建新的数组并复制所有元素,这在大数据量操作时可能效率较低。 相比之下,List是C# 2.0引入的泛型集合,它...
在网页开发中,数据展示和检索是至关重要的环节,尤其在大数据量的场景下,条件筛选功能能够极大地提升用户体验。本篇文章将详细讲解如何利用jQuery实现一个高效的表格数据条件筛选功能。 首先,jQuery是一个轻量级...
描述“Linq_List_Contrast_Baseon_Array 使用Linq筛选满足数组条件的List集合”进一步明确了这个任务是对比和筛选基于数组条件的List元素。 Linq提供了多种查询操作符,例如Where、Select、OrderBy等,用于处理各种...
标题“c#list添加数据”指的是如何向已经实例化的`List<T>`对象中添加数据。描述中提到“list<>.count==0”的情况,即列表为空时,需要向列表中添加数据。下面我们将详细讲解如何操作。 首先,我们来看代码中的`...
### 两个List比较取不同的对象 在Java编程中,经常需要对两个`List`进行比较,找出它们之间的差异。这通常涉及到数据结构的理解、算法设计以及...在实际应用中,可以根据具体需求灵活调整这些技术点,以达到最佳效果。
在C#编程语言中,数据筛选和排序是数据库应用系统开发中的核心技能,尤其是在构建高效、用户友好的数据管理系统时。本教学资源"数据筛选和排序.zip"包含了S1课程中关于这一主题的第六章教学内容,包括演示案例、上机...
4. **替代方案**:有时候,预处理数据或使用不同的数据结构可以提高效率。例如,如果需要移除的元素是连续的,直接使用`subList()`和`clear()`可能更快。 5. **批量操作**:如果需要移除的元素列表较大,可以考虑先...
在实际应用中,有时我们需要将ListControl中的数据与Excel文件进行交互,例如导入Excel数据到ListControl中展示,或者从ListControl导出数据到Excel文件。在VS2010这样的集成开发环境中,实现这种功能可以极大地提高...
在Python编程中,筛选数据是常见的操作,尤其是在处理列表、字典和集合等数据结构时。本篇文章将详细探讨如何在这些数据结构中筛选出符合特定条件的数据。 首先,我们来看如何在列表中筛选数据。在列表中筛选数据...
数据筛选是数据分析过程中的关键步骤,...熟练掌握Pandas的筛选技巧能极大地提高数据处理效率,确保分析结果的准确性。在实际操作时,根据数据特性和分析需求,灵活运用这些方法,能够使你的数据分析工作更加得心应手。
* 在大规模数据处理时,使用List对象的分页思想可以提高处理效率。 * 在数据分页时,使用List对象的分页思想可以实现分页处理。 * 在批量处理时,使用List对象的分页思想可以实现批量处理。 List对象的分页思想是一...
在C#编程中,将List数据导出到XML文件是一个常见的任务,特别是在处理数据存储、交换或序列化时。XML因其结构清晰、易于解析和跨平台兼容性而被广泛使用。下面我们将详细讨论如何实现这一功能,以及相关的重要知识点...
请注意,尽管可以通过上述方法保存List数据,但这并不是SharedPreferences的最佳实践。对于大量或复杂数据的存储,建议使用SQLite数据库或者Room库,或者考虑使用文件存储、ContentProvider等其他持久化方案。此外,...
本文将深入探讨如何比较两个集合,并关注在Java中使用List进行对比时的“新增”、“编辑”和“删除”操作。首先,我们需要理解集合的基本概念。集合是存储一组元素的数据结构,而List是一种有序的集合,允许重复元素...
描述中提到的“**再做List数据集合打印或数据绑定时,需要把List集合分组筛选**”意味着在处理List数据并准备显示或输出时,可能需要根据某些条件对数据进行分类,然后可能进一步筛选出特定的子集。这可以通过Linq的...
这种操作可以将List数据分配给多个线程,每个线程处理一部分数据,从而提高程序的执行效率。 二、为什么需要Java多线程处理List数据? 在处理大规模数据时,使用单线程来处理List数据可能会导致程序执行速度慢,...
然而,标准的Intent API并不直接支持传递大型数据集合,如List。本文将详细讨论如何在Android中实现Activity之间传递List数据。 首先,理解Intent的基本用法。Intent主要用于启动其他Activity或BroadcastReceiver,...
Java 开发 List 提高效率 Java 开发中,List 是一个常用的数据结构,经常需要将 List 转换为逗号分隔的字符串,以便于...提高 List 转换效率需要选择合适的方法和数据结构,并合理使用 third-party 库和 Stream API。
java list 对比工具类 java list 对比工具类java list 对比工具类 java list 对比工具类java list 对比工具类 java list 对比工具类java list 对比工具类 java list 对比工具类