`

Java List 遍历超慢的问题分析以及解决

 
阅读更多

场景:今天客户打电话过来反应导出非常慢,慢到无法忍受。因为开发人员已经离职,所以只能自己动手了。

 

需求:主要是2个数据表关联问题,第一个表数据6万,其实每一条数据又需要根据流水号读取另外一个表。

 

出错原因:开发人员一次性读取主表6万数据,然后一次性读取附表所有内容放入List类型的listA中。关联的时候使用For循环进行遍历,主表6万记录,附表10万记录。总体遍历为6*10(万次),能不慢吗?

 

处理做法:第一次6万循环估计无法避免,暂时不理。第二次For遍历很明显绝对慢,其实很简单。可以使用Map进行遍历查值,非常快!

 

//第一步:把List的值写入Map结构中
List<ServiceAppendix> sas = serviceAppendixManager.findAll();  //取出来,暂时放到了内存了
Map<String, ServiceAppendix> mapSas = new HashMap<String, ServiceAppendix>();
for (ServiceAppendix sa : sas) {
     if (sa == null) {
	continue;
     }
     // ServiceAppendix为javabean对象.
     // 以流水号作为key.
     mapSas.put(sa.getSerialNum(), sa);
}

 

//第二步:根据键值查找对象
ServiceAppendix temp = mapSas.get(sd.getSerialNum());//sd为对象,getSerialNum()为获取流水号

 

 

 

备注:开发人员之前附表没遍历一次查询一次数据库,即6万次查询,也是非常慢的,不建议使用。真要用,建议加索引。

 

分享到:
评论
1 楼 xiao怪兽 2016-08-26  
个人也经常将LIST 转 MAP ,好像叫做用空间换时间吧。

相关推荐

    Java 遍历文件夹内文件

    总结来说,遍历Java文件夹内文件涉及到`File`类的使用,特别是`listFiles()`方法,可能还会用到一些第三方库。具体的实现细节和策略,以及`FileSystem.java`和`FileSystem1.java`中的代码,都需要通过实际查看源码...

    java遍历JSON树

    ### Java遍历JSON树知识点详解 ...通过以上介绍,我们可以看到,在Java中遍历JSON树并不复杂,但确实需要理解JSON的基本结构以及所使用的库的具体用法。希望本文能帮助你更好地理解和掌握这一技能。

    list遍历集合源码

    这些方法的实现都与List的具体实现有关,理解和分析源码能帮助我们优化代码性能和解决问题。 总的来说,深入学习List接口及其实现类的源码对于理解Java集合框架的工作原理至关重要。通过研究源码,我们可以更好地...

    解决JAVA遍历List集合,删除数据时出现的问题

    JAVA 中遍历List集合时删除数据出现的问题是很多开发者经常遇到的问题,本文对该问题进行了详细的讲解,总结了多种解决方法,并对问题的原因进行了深入分析。 问题描述 在遍历List集合的过程中删除数据是非常常见...

    java遍历list集合.zip

    本资料主要探讨如何遍历Java中的List集合,包括基本的迭代器方式、增强for循环(foreach)以及流(Stream)API的使用。下面我们将深入讲解这些遍历方法。 1. 迭代器(Iterator)遍历: Java中的List接口定义了...

    java中遍历某个目录下的所有文件及文件夹中的文件

    ### Java中遍历某个目录下的所有文件及文件夹中的文件 在Java开发中,经常会遇到需要遍历指定目录及其子目录下所有文件的情况。本文将详细介绍如何使用Java标准库中的`java.io.File`类来实现这一功能。我们将通过一...

    java多叉树的实现和遍历输出

    在Java编程中,多叉树是一种非线性数据结构,每个节点可以有多个子节点,与二叉树(每个节点最多有两个子节点)相比,它提供了更广泛的灵活性。...通过理解多叉树的实现和遍历,可以更好地解决涉及此类数据结构的问题。

    java中循环遍历删除List和Set集合中元素的方法(推荐)

    在Java编程中,遍历并删除集合(如List或Set)中的元素是一项常见的操作,但如果不正确地执行,可能会导致`ConcurrentModificationException`异常。这个异常通常在尝试修改正在迭代的集合时出现,因为Java的集合迭代...

    java遍历文件树形结构输出

    ### Java遍历文件树形结构输出 在Java编程中,我们经常会遇到需要遍历文件夹中的所有文件,并将其以树形结构输出的需求。这在文件系统管理、构建项目目录结构等场景中非常实用。下面将详细介绍如何使用Java来实现这...

    java程序的四种遍历

    首先,这段代码主要展示了如何在Java中遍历一个列表(`List`),并且提供了四种不同的遍历方法。接下来,我们将详细介绍这四种遍历方式及其应用场景。 ### 1. 基于索引的传统for循环 这是最传统也是最直观的遍历...

    Java list利用遍历进行删除操作3种方法解析

    Java list利用遍历进行删除操作3种方法解析 Java list 是一种常用的数据结构,经常被用来存储和操作数据。在 Java 中,对 list 进行遍历和删除操作是一种常见的需求。本文将介绍 Java list 利用遍历进行删除操作的 ...

    Java遍历本地目录所有文件的实现

    ### Java遍历本地目录所有文件的实现:递归方法详解 在Java开发中,遍历本地目录中的所有文件是一项常见的需求,尤其在处理文件管理、数据读取或系统监控等场景下。本文将深入探讨如何利用Java编程语言,通过递归...

    java遍历list集合3种方式和性能对比

    在Java编程中,遍历List集合是常见的操作,有多种方式可以实现这一功能。下面将详细探讨三种遍历List集合的方法及其性能差异。 1. 使用`Iterator`遍历: ```java List list = new ArrayList(); // 添加元素 for ...

    java技巧java中可以用来循环遍历任何一个集合的通用方法

    ### Java技巧:循环遍历集合的通用方法 在Java编程中,经常需要对集合进行遍历操作以处理其中的数据元素。对于不同的集合类型(如`List`、`Set`、`Map`等),如何实现一个统一且高效的遍历方式是非常重要的。本文将...

    Java递归算法遍历部门代码示例

    Java 递归算法遍历部门代码示例 ...Java 递归算法遍历部门代码示例是一种常用的技术,用于解决部门树结构的遍历问题。通过使用递归算法,可以简洁地解决复杂的问题,并提高代码的可读性和可维护性。

    java数组遍历 删除remove(示例代码)

    总结来说,这个示例展示了如何在Java中创建一个包含自定义对象的ArrayList,如何向ArrayList中添加和删除元素,以及如何安全地遍历ArrayList并访问其元素。在实际开发中,了解这些基本操作对于处理动态数据集至关...

    java中List对象集合的遍历方法(三个)

    在Java编程中,List接口是集合框架的重要组成部分,它提供了有序的、允许重复元素的存储。遍历List对象集合是日常开发中常见的操作,这里我们将详细介绍三种遍历List的方法,并探讨它们的性能特点和适用场景。 ### ...

    HashMap和List遍历方法及如何遍历删除元素总结

    要解决List遍历删除元素的问题,可以使用Iterator来遍历List,并使用Iterator的remove方法来删除元素。这样可以避免ConcurrentModificationException异常。 HashMap的遍历方法 1. 使用keySet()方法 使用keySet()...

    火山pc 文件遍历的解决方案

    火山PC文件遍历的解决方案主要关注的是在计算机系统中如何高效、安全地遍历和管理大量文件的问题。在IT行业中,文件遍历是一项基础但至关重要的任务,它涉及到操作系统、编程语言、文件系统等多个领域。这里我们将...

Global site tag (gtag.js) - Google Analytics