001 数组和list的选择
数组是定长的,ArrayList是变长的。由于数组长度是固定的,因此在生命数组时就已经分配好内存了。而数组的操作则会更快一些。另一方面,如果不知道数据的大小
数组可以是多维的,但ArrayList只能是一维的。 数组常用于固定的,已知的,东西,List对付未知的。
002 多使用枚举
比如系统的返回码 返回message
003 final
工具类使用final修饰,好处,使用java虚拟机的内联机制,性能提高百分之40.
Final修饰你的实体类,不被继承的类,你只是将他作为一个实体,在内存中的指针不可改变。
004 字符串
不能多次+,容易内存溢出
005多用本地变量
调用方法时传递的参数以及在调用中创建的临时变量都保存在栈中,速度较快,其他变量,如静态变量、实例变量等,都在堆中创建,速度较慢。
另外,栈中创建的变量,随着方法的运行结束,这些内容就没了,不需要额外的垃圾回收。
006循环的改造
- for (int i = 0; i < list.size(); i++)
- {…}
建议替换为: - for (int i = 0, length = list.size(); i < length; i++)
- {…}
007 使用懒加载
例如:
- String str = “aaa”;
- if (i == 1)
- {
- list.add(str);
- }
建议替换为: - if (i == 1)
- {
- String str = “aaa”;
- list.add(str);
- }
008全局变量
将常量声明为static final,并以大写命名
这样在编译期间就可以把这些内容放入常量池中,避免运行期间计算生成常量的值。另外,将常量的名字以大写命名也可以方便区分出常量与变量
009 Map的遍历
HashMap<String, String> hm = new HashMap<String, String>();
hm.put("111", "222");
Set<Map.Entry<String, String>> entrySet = hm.entrySet();
Iterator<Map.Entry<String, String>> iter = entrySet.iterator();
while (iter.hasNext())
{
Map.Entry<String, String> entry = iter.next();
System.out.println(entry.getKey() + "\t" + entry.getValue());
}
for (Map.Entry<String, String> entry : this.aliasMap.entrySet()) {//这种遍历,值的学习,遍历的是 Entity,直接遍历实体,现在高大上
String registeredName = entry.getValue();
if (registeredName.equals(name)) {
String registeredAlias = entry.getKey();
return (registeredAlias.equals(alias) || hasAlias(registeredAlias, alias));
}
}
如果您觉得我的付出对您有帮助,还请关注+点赞哦