最近看mybatis源码分享两个小知识点

最近看mybatis源码,看了一段时间了,还在继续,里面有很多好东西,后面整理出来分享给大家,这里先写两个小的细节,可能有些同学已经是这么写了,那么就当做你没看好了。希望你觉得是新鲜的。

 

先来看下面这段代码,这个代码本身没什么意义,只是表示一下写法:

 

 

package collection;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MTest {

	private static final Map<Integer,String> map  = new HashMap<Integer,String>(){
		/**
		 * 
		 */
		private static final long serialVersionUID = 1L;
		{
			put(1, "a");
			put(2, "b");
			
		}

	};
	
	public static void main(String[] args) {

		List<String> list = new ArrayList<>();
		list.add("a");
		list.add("b");
		list.toArray(new String[list.size()]);
	}

}

 上面代码中包含了我要说的两个点:

 

第一点:在写静态map的时候直接匿名内部类初始化,代替static块:

原来我是这么写:

private static final Map<Integer,String> map  = new HashMap<Integer,String>();
static{
      map.put(1,"a");
      map.put(2,"b");
}

现在可以用如下代码代替:

private static final Map<Integer,String> map  = new HashMap<Integer,String>(){
		/**
		 * 
		 */
		private static final long serialVersionUID = 1L;
		{
			put(1, "a");
			put(2, "b");
			
		}

	};

这种写法的优点是把map的创建和初始化绑在一起,在代码上比较固定,不容易出错,如果用静态块去初始化,那么静态库必须放在map下方的任意地方,随意性比较大,如果中间隔很多代码不易阅读。类似于

int i=0;和  int i;   i=0;一样。静态map和静态块几乎同时加载,在性能和编译执行上没有太大的差别。如果理解了这种写法,就会发现这种方式简洁明了。缺点是利用了匿名内部类,对刚接触java的新手来说觉得是难以理解的写法。

 

 

第二点:集合类转数组的时候指定数组大小:

原来我的写法:

	list.toArray(new String[]{});

改用如下写法更好:

	list.toArray(new String[list.size()]);

这种写法的好处是明确指定大小能让系统少进入一些条件之中,能提高效率,源码这里有不贴了,读者可以自己去看看。其实这一点跟我们平时使用数组的写法一样,如   :

Integer[] s1= new Integer[]{};

Integer[] s2= new Integer[5];

如果已经很明确的知道有多少元素,那就使用s2的写法,提高执行效率。

 

 

 

怎么样,你是不是这么写的?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值