JAVA高效开发小技巧总结(这是一位同事的分享,感谢)
2016-05-26 11:10
239 查看
1.以下两种for循环
这一种循环,会额外创建一个迭代器,然后遍历值。当遇到链表、Hashmap表时,用它速度很快。因为这样不需要通过遍历整个集合查找元素。
这一种循环,不用创建迭代器,当遇到数组、ArrayList时,用它速度最快,节省创建迭代器时间。如果遇到链表、HashMap则每一个都必须通过遍历整个集合来查找元素,时间复杂度立马上升。
2.反转字符串,用它速度最快
(1)文件流操作,不释放的话容易导致流溢出。
(2)解锁问题
4.HashMap在创建时,最好预估一下大小。因为HashMap会在放不下时做刷新,这时,会将小的haspMap拷贝一份给更大的haspMap.
预估大小,这样可以满足大部分场景,如果大小仍然超出了该怎么办?
5.字符串的不可变性,不用再说了,前面总结过
6.单引号和双引号是有区别的
7.java中创建对象的确很昂贵。不要随便乱建对象。
从效率上讲,越少越好。可是总是有那么多的大包,如果碰到性能瓶颈,那么这个方法就是一个出路。
从面向对象的角度看,我觉得,如果性能不是瓶颈,领域模型的设计,还有逻辑清晰、容易理解也许更重要。需要视情况而定。
这一种循环,会额外创建一个迭代器,然后遍历值。当遇到链表、Hashmap表时,用它速度很快。因为这样不需要通过遍历整个集合查找元素。
for(String str : list){ }
这一种循环,不用创建迭代器,当遇到数组、ArrayList时,用它速度最快,节省创建迭代器时间。如果遇到链表、HashMap则每一个都必须通过遍历整个集合来查找元素,时间复杂度立马上升。
int len=list.size(); for(int i=0;i<len;i++){ String str=list[i]; }
2.反转字符串,用它速度最快
public String get(){ String str = "dddddd"; return new StringBuilder(str).reverse().toString(); }3.在try catch中要加finally,释放一些特殊的操作
(1)文件流操作,不释放的话容易导致流溢出。
(2)解锁问题
4.HashMap在创建时,最好预估一下大小。因为HashMap会在放不下时做刷新,这时,会将小的haspMap拷贝一份给更大的haspMap.
预估大小,这样可以满足大部分场景,如果大小仍然超出了该怎么办?
5.字符串的不可变性,不用再说了,前面总结过
6.单引号和双引号是有区别的
7.java中创建对象的确很昂贵。不要随便乱建对象。
从效率上讲,越少越好。可是总是有那么多的大包,如果碰到性能瓶颈,那么这个方法就是一个出路。
从面向对象的角度看,我觉得,如果性能不是瓶颈,领域模型的设计,还有逻辑清晰、容易理解也许更重要。需要视情况而定。
相关文章推荐
- 利用spring session解决共享Session问题
- 分页( yahoo2 )
- Java编程思想(第四版)笔记(二)
- java设计模式之组合模式
- Java的四种线程初步认识
- 决策树ID3 Java程序
- 关于final修饰符你不知道的事
- Java调用Windows内cmd命令
- Java开发人员学习路线
- Java中的多线程你只要看这一篇就够了
- spring 学习中 遇到的那些坑
- (Java实现) HDOJ 2068 RPG的错排 错排及组合
- Eclipse上GIT插件EGIT使用手册
- JAVA打印输出整数
- Spring MVC Controller单例陷阱
- java并发编程实践(2)线程安全性
- Java--内部类
- Java-线程池
- 完美解决java.lang.IllegalArgumentException: pointerIndex out of range
- RxJava操作符repeatWhen()和retryWhen()