最近在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;
}
分享到:
相关推荐
### 代码优化的三个阶段 #### 一、引言 在软件开发过程中,代码优化是一项重要的任务,它能够显著提高程序的性能与效率。本文基于一份来自2007年的PPT材料,深入探讨了代码优化的三个主要层面:算法优化、流程优化...
您可以自由弹奏乐曲,也可以将曲谱按规则编辑成文件,再用本软件打开文件,让本程序自动为您弹奏,还可以将弹奏过程录制下来,即时回放弹奏过程,或保存为录制乐谱文件(.pianoR 文件),再打开此类文件进行播放,...
- 对于非关键资源,可以在后台线程进行异步加载,待资源准备好后再更新UI。 24. **减少资源占用** - 除了内存之外,CPU和GPU的使用情况也需要关注。通过减少不必要的计算和渲染操作,可以减轻硬件资源的压力。 ...
您可以自由弹奏乐曲,也可以将曲谱按规则编辑成文件,再用本软件打开文件,让本程序自动为您弹奏,还可以将弹奏过程录制下来,即时回放弹奏过程,或保存为录制乐谱文件(.pianoR 文件),再打开此类文件进行播放,...
- 再利用这些优化后的参数通过BP算法对神经网络进行进一步训练。 - **评估**:对于每一次训练结果,计算训练集和测试集的平均输出,并将这些结果记录到文件中,便于后续分析。 #### 3. 代码解析 - `function main`...
Karen Morton及其团队在本书中提供了专业的方案:先掌握语言特性,再学习Oracle为提升语言效率而加入的支持特性,进而将两者综合考虑并在工作中加以应用。作者通过总结各自多年的软件开发和教学培训经验,与大家...
### JAVA面试宝典知识点详解 #### 一、Java基础部分 **1.1 .java文件中的类数量及其限制** 在`.java`文件中可以包含多个类(非内部...每个知识点都尽可能地进行了详细的解释和分析,希望能够帮助到准备面试的朋友。
- 编辑器选中优化 选择鼠标到窗口外事件处理 ####fix bug:(bug解决和程序优化) - backspace后退截获浏览器事件,作为后退前一次访问的文件夹; - 搜索首字母不匹配问题 - 弹出层中的弹出层关闭,父窗口失去焦点...
6. **处理手势**:确保ScrollView的手势识别器(Gesture Recognizers)正常工作,允许用户通过轻扫或捏合手势进行交互。 7. **优化性能**:为了提高性能,可以考虑使用UIPageControl或者自定义的指示器来显示当前的...
【省赛程序题】参考代码-无言侠.zip 这个压缩包文件主要包含的是针对省级编程竞赛的参考代码,由“无言侠”提供。虽然没有具体的标签信息,但我们可以推断其中的内容可能涵盖了多种编程语言、算法和数据结构的应用,...
可以通过重写`CWnd`的`PreTranslateMessage`方法,拦截键盘和鼠标消息,再转发给Cocos2d-x进行处理。 **步骤八:资源管理** Cocos2d-x的资源通常保存在项目的`Resources`目录下,MFC程序需要能够正确加载这些资源。...
"蓝桥杯学习资料大全-题目参考代码-危险系数.zip" 是一个专门为参与"蓝桥杯"编程竞赛的学习者准备的资源包。蓝桥杯是一项全国性的IT技能竞赛,旨在提升大学生和中学生的编程能力与算法理解。这个压缩包包含了历年来...
子功能1下KEY不为2和4,循环 MOV KEY,#00H SJMP MAIN1_START ;子功能1下KEY=4,转入时钟模块 MAIN0_J0: CJNE A,#02H,MAIN0_J1 MOV KEY,#00H ;主菜单下KEY=2,显示ABCDEF SHOW_ABCDEF_START: ;显示...
`setup()`函数在程序运行时仅执行一次,用于进行初始化工作。这里通过`pinMode()`函数设置8号接口为输出模式,这样我们才能通过该接口控制蜂鸣器发声。 ##### 2. 音乐旋律的定义 ```c++ int melody[] = {262, 294, ...
在Lua编程中,遵循优化的基本原则,采用正确的策略,结合实际项目需求进行有针对性的优化,是实现高性能、高效率代码的关键。通过持续的测试和优化,可以逐步提升Lua应用的运行效率,确保其在复杂场景下的表现。
- **第0课:准备工作** - **操作系统选择**: - Linux - MacOSX - Windows - **文本编辑器推荐**:建议避免使用集成开发环境(IDE),选择如Vim或Emacs等文本编辑器。 #### 三、编程基础 - **习题1:重拾编译器*...
2. **循环一致性**:通过循环一致性损失,即使没有对应的真实图像,也能强制生成器学习到保留原始信息的转换。例如,将马转为斑马后再转回,应该尽可能恢复原马的图像。 3. **应用广泛**:CycleGAN不仅限于马和斑马...
1. **准备工作**:确保已经安装了Visual Studio或其他支持WinSock编程的IDE。 2. **编写代码**:根据上述流程,分别编写服务器端和客户端的程序。 3. **编译程序**:使用合适的编译器编译程序,注意链接WinSock库。 ...
2. `continue`:`continue`语句用于跳过当前循环体中剩余的语句,然后返回到循环条件检查,准备进行下一次迭代。 三、循环嵌套 在C语言中,循环可以嵌套,即一个循环体内部包含另一个循环。这在处理多维度数据(如...