`
laodizhuq
  • 浏览: 26268 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

代码优化2-准备工作在循环外进行

阅读更多
最近在IC轮岗,翻看了很多代码,发现需要优化的地方很多,下面我们看一段代码

public static String aliasMap2String(Map<String, Map<String, String>> aliasMap) {
	if (aliasMap == null) {
		return "";
	}
	
	StringBuilder nsb = new StringBuilder();
	for (String key : aliasMap.keySet()) {
		Map<String, String> vals = aliasMap.get(key);
		if (StringUtil.isBlank(key) || [color=red]TBStringUtil.getInt(key)[/color] <= 0 || null == vals || vals.isEmpty()) continue;
		for (String vid : vals.keySet()) {
			String alias = vals.get(vid);
			if (StringUtil.isBlank(vid) || TBStringUtil.getInt(vid) <= 0 || StringUtil.isBlank(alias)) continue;
			nsb.append([color=red]TBStringUtil.getInt(key)[/color]).append(psubSp).append(TBStringUtil.getInt(vid));
			nsb.append(psubSp).append(escapeForProp(alias));
			nsb.append(pmainSp);
		}
	}
	String alias = nsb.toString();
	return alias;
}

这段代码,咋一看,还不错,考虑到了String的低效率,采用了StringBuilder,
但是请看红色部分代码,在开始为了过滤无效数据,对key做了合法性校验,其中一项是将key转换成int然后判断是否大于0,
校验通过后,开始循环处理内部的一个map的值,这样的话key在循环中又被进行了多次转换,
对这部分代码进行优化,结果如下:
public static String aliasMap2String(Map<String, Map<String, String>> aliasMap) {
	if (aliasMap == null || aliasMap.isEmpty()) {
		return "";
	}
	
	StringBuilder nsb = new StringBuilder();
	for (String key : aliasMap.keySet()) {
		Map<String, String> vals = aliasMap.get(key);
		if (StringUtil.isBlank(key) || null == vals || vals.isEmpty()) continue;
		int intKey = TBStringUtil.getInt(key);
		if(intKey <= 0 ) continue;
		for (String vid : vals.keySet()) {
			String alias = vals.get(vid);
			if (StringUtil.isBlank(vid) || StringUtil.isBlank(alias)) continue;
			int intVid = TBStringUtil.getInt(vid);
			if(intVid <= 0) continue;
			nsb.append(intKey).append(psubSp).append(intVid);
			nsb.append(psubSp).append(escapeForProp(alias));
			nsb.append(pmainSp);
		}
	}
	String alias = nsb.toString();
	return alias;
}
2
0
分享到:
评论

相关推荐

    代码优化的三个阶段

    ### 代码优化的三个阶段 #### 一、引言 在软件开发过程中,代码优化是一项重要的任务,它能够显著提高程序的性能与效率。本文基于一份来自2007年的PPT材料,深入探讨了代码优化的三个主要层面:算法优化、流程优化...

    贺兰_电子钢琴 2.0.5(源代码)

    您可以自由弹奏乐曲,也可以将曲谱按规则编辑成文件,再用本软件打开文件,让本程序自动为您弹奏,还可以将弹奏过程录制下来,即时回放弹奏过程,或保存为录制乐谱文件(.pianoR 文件),再打开此类文件进行播放,...

    基于凌日优化算法TSOA优化CNN-BiGRU-Attention锂电池健康寿命预测算法研究Matlab实现.rar

    通过使用TSOA对CNN-BiGRU-Attention模型中的超参数进行优化,不仅提升了模型的预测精度,还增强了模型在面对不同电池种类和不同工作条件下的鲁棒性。 该研究的Matlab实现包括了一系列参数化的编程代码,这些代码...

    基于飞蛾扑火优化算法MFO优化CNN-BiGRU-Attention锂电池健康寿命预测算法研究Matlab实现.rar

    此外,代码的参数化设计让使用者可以方便地更改参数,根据自身的研究需要进行优化和调整。代码中包含的详细注释和清晰的编程思路,不仅使得本代码适合有基础的研究生进行深入研究,同时也适合新手入门,进行课程设计...

    iOS代码优化

    - 对于非关键资源,可以在后台线程进行异步加载,待资源准备好后再更新UI。 24. **减少资源占用** - 除了内存之外,CPU和GPU的使用情况也需要关注。通过减少不必要的计算和渲染操作,可以减轻硬件资源的压力。 ...

    【中科院2区】基于遗传算法GA优化CNN-BiGRU-Attention锂电池健康寿命预测算法研究Matlab实现.rar

    本研究提出了一种创新的锂电池健康寿命预测算法,该算法基于遗传算法(GA)对卷积神经网络(CNN)、双门循环单元(BiGRU)以及注意力机制(Attention)进行优化,以提高预测的准确性和效率。 遗传算法(Genetic ...

    贺兰_电子钢琴 2.0.4(简单发布)

    您可以自由弹奏乐曲,也可以将曲谱按规则编辑成文件,再用本软件打开文件,让本程序自动为您弹奏,还可以将弹奏过程录制下来,即时回放弹奏过程,或保存为录制乐谱文件(.pianoR 文件),再打开此类文件进行播放,...

    matlab BP源代码

    - 再利用这些优化后的参数通过BP算法对神经网络进行进一步训练。 - **评估**:对于每一次训练结果,计算训练集和测试集的平均输出,并将这些结果记录到文件中,便于后续分析。 #### 3. 代码解析 - `function main`...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    Karen Morton及其团队在本书中提供了专业的方案:先掌握语言特性,再学习Oracle为提升语言效率而加入的支持特性,进而将两者综合考虑并在工作中加以应用。作者通过总结各自多年的软件开发和教学培训经验,与大家...

    【SCI2区】基于VMD-三角测量拓扑聚合优化器TTAO-LSTM光伏预测Matlab实现.rar

    该方法的提出,主要是为了解决光伏系统输出功率预测的难题,其核心在于通过VMD和TTAO进行数据预处理和特征提取,再利用LSTM强大的时间序列预测能力,以提高预测的准确度和稳定性。 文件中包含了适用于不同版本的...

    JAVA面试宝典-准备成功

    ### JAVA面试宝典知识点详解 #### 一、Java基础部分 **1.1 .java文件中的类数量及其限制** 在`.java`文件中可以包含多个类(非内部...每个知识点都尽可能地进行了详细的解释和分析,希望能够帮助到准备面试的朋友。

    【创新未发表】Matlab实现蝗虫优化算法GOA-Kmean-Transformer-BiLSTM负荷预测算法研究.rar

    该算法的主要创新点在于对传统负荷预测模型的改进与优化,通过引入蝗虫优化算法和K-means聚类算法对数据进行预处理和特征提取,再结合Transformer模型处理时间序列数据和BiLSTM捕捉时间序列中的长短期依赖关系,以期...

    KODExplorer 芒果云-资源管理器

    - 编辑器选中优化 选择鼠标到窗口外事件处理 ####fix bug:(bug解决和程序优化) - backspace后退截获浏览器事件,作为后退前一次访问的文件夹; - 搜索首字母不匹配问题 - 弹出层中的弹出层关闭,父窗口失去焦点...

    Python实例源码-实例02 -代码雨(代码刷屏)

    实例-02代码雨的核心原理涉及到字符输出和定时刷新,实现起来大致可以分为以下几个步骤:首先,需要准备一个字符集合,这可以是ASCII字符、Python代码段,或者是其他任意字符。然后,创建一个循环,这个循环将不断地...

    布谷鸟优化算法CS-TCN-LSTM-Multihead-Attention多变量时间序列预测Matlab实现.rar

    TCN-LSTM-Multihead-Attention多头注意力机制多变量时间序列预测Matlab实现”展示了如何将布谷鸟优化算法与深度学习模型相结合,利用LSTM和TCN来处理时间序列数据,再通过多头注意力机制进行特征提取,从而提高多...

    ios-无限循环.zip

    6. **处理手势**:确保ScrollView的手势识别器(Gesture Recognizers)正常工作,允许用户通过轻扫或捏合手势进行交互。 7. **优化性能**:为了提高性能,可以考虑使用UIPageControl或者自定义的指示器来显示当前的...

    Python 实现TCN-BiGRU时间卷积双向门控循环单元时间序列预测的详细项目实例(含完整的程序,GUI设计和代码详解)

    整个项目涵盖了从理论背景、模型架构设计到具体的代码实现,再到项目部署的完整流程。首先介绍了TCN与BiGRU的基本概念和各自优势,阐述了二者的结合如何更好地处理时间序列数据。随后逐步讲解了从数据准备、模型构建...

    【省赛程序题】参考代码-无言侠.zip

    【省赛程序题】参考代码-无言侠.zip 这个压缩包文件主要包含的是针对省级编程竞赛的参考代码,由“无言侠”提供。虽然没有具体的标签信息,但我们可以推断其中的内容可能涵盖了多种编程语言、算法和数据结构的应用,...

    MFC_Cocos2dx3.2

    可以通过重写`CWnd`的`PreTranslateMessage`方法,拦截键盘和鼠标消息,再转发给Cocos2d-x进行处理。 **步骤八:资源管理** Cocos2d-x的资源通常保存在项目的`Resources`目录下,MFC程序需要能够正确加载这些资源。...

Global site tag (gtag.js) - Google Analytics