java开发手册

本文介绍Java编程中的优化方法,包括循环内字符串连接的最佳实践、集合初始化、Map遍历技巧、集合选择注意事项等,帮助开发者提高代码效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.循环体内,字符串的连接方式,使用StringBuilder的append方法进行扩展。

说明:反编译出的字节码文件显示每次循环都会new出一个StringBuilder对象,然后进行append操作,最后通过toString方法返回String对象,造成内存资源浪费。

反例:

String str = "start";
for (int i = 0; i < 100; i++) {
    str = str + "hello";
}

2.集合:请为集合指定初始容量

List每新增一个元素,就会检测List的当前容量是否已经到达临界点,如果到达临界点则会扩容1.5倍。而扩容是相当耗资源的。

List<Student> list = new ArrayList<>(1000);

参考:http://blog.youkuaiyun.com/chenssy/article/details/38373833

3.使用entrySet遍历Map类集合KV,而不是keySet方式进行遍历。

说明:keySet其实是遍历了2次,一次是转为Iterator对象,另一次是从hashMap中取出key所对应的value。而entrySet只是遍历了一次就把key和value都放到了entry中,效率更高。如果是JDK8,使用Map.foreach方法。

正例:values()返回的是V值集合,是一个list集合对象;keySet()返回的是K值集合,是一个Set集合对象;entrySet()返回的是K-V值组合集合。

参考:http://blog.youkuaiyun.com/qian_xiao_lj/article/details/50747486

4.高度注意Map类集合K/V能不能存储null值的情况

如下表格:(使用时注意非空判断)

集合类keyvaluesuper说明
Hashtable不允许null不允许nullDicitionary线程安全
TreeMap不允许null允许nullAbstractMap线程不安全
HashMap允许null允许nullAbstractMap线程不安全
①hashtable是同步的,而hashmap不是。

5.合理利用好集合的有序性(sort)和稳定性(order)

避免集合的无序性(unsort)和不稳定性(unorder)带来的负面影响。

说明:有序性是指遍历的结果是按某种比较规则依次排列的。稳定性指集合每次遍历的元素次序是一定的。

如:ArrayList是order/unsort;HashMap是unorder/unsort;TreeSet是order/sort。

6.Set元素的唯一性

快速对一个集合进行去重操作,避免使用List的contains方法进行遍历、对比、去重操作。

7.JAVA集合

①对java的集合的理解是相对于数组。数组只能存放类型一样的数据(基本数据/引用类型),集合可存储数目不固定的数据。

②java集合主要分为三种类型:set、map和List。Set存放的是对象的引用,没有重复对象。

③collection接口,最基本的集合接口,set和list都继承了collection,map没有。

该接口的方法:

boolean add(Object o)

void clear()

boolean isEmpty()

boolean contains(Object o)

Iterator iterator()

boolean remove(Object o)

int size()

Object[] toArray()

参考:http://blog.youkuaiyun.com/lushuaiyin/article/details/7381478/

8.






















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值