每天学习:2011.3.3 闭包 动态代理 Map的key
每日学习:2011.3.3 闭包 动态代理 Map的key
1、闭包:是一个可调用的对象,它记录了一些信息,这些信息来自于创建它的作用域。
个人理解:闭包思想主要是函数可以作为一级参数,是一种函数是对象的思想。函数可以作为参数或者返回值使用。
2、动态代理:为了提供额外的或不同的操作,而插入的用来代替实际对象的对象(中间人的作用)
通常代理类和被代理类实现了相同的借口,在面向借口的调用中隐藏了具体的类型信息。
java的动态代理实现:实现InvocationHandler接口,通过Proxy.newInstance()来实例化。
3、Map的key必须同时覆盖Object的equals()和hashCode()方法
new LinkedHashMap(16,0.75f,true) =>使用最近最少使用(LRU)算法,最近最少使用的排在前面
Object默认的hashCode()使用对象的地址生成散列码,equals()也是比较对象的地址
hashCode()最重要的因素:无论何时,对同一个对象调用都应该生成相同的值
4、如果将自定的类型对象放入HashSet、HashMap、Hashtable、LinkedHashSet、LinkedHashMap这此散列集合时,一定需要重写equals与hashCode方法,这样在放入进去之后还能查找出来。如果放入其他非散列类型的集合时,其实只需要
重写equals就可以了。
1、闭包:是一个可调用的对象,它记录了一些信息,这些信息来自于创建它的作用域。
个人理解:闭包思想主要是函数可以作为一级参数,是一种函数是对象的思想。函数可以作为参数或者返回值使用。
function a(){ var i=0; function b(){ var j=i; //只要是引用了 i 的。 alert(j); } return b; } var c=a(); c();
2、动态代理:为了提供额外的或不同的操作,而插入的用来代替实际对象的对象(中间人的作用)
通常代理类和被代理类实现了相同的借口,在面向借口的调用中隐藏了具体的类型信息。
java的动态代理实现:实现InvocationHandler接口,通过Proxy.newInstance()来实例化。
3、Map的key必须同时覆盖Object的equals()和hashCode()方法
new LinkedHashMap(16,0.75f,true) =>使用最近最少使用(LRU)算法,最近最少使用的排在前面
Object默认的hashCode()使用对象的地址生成散列码,equals()也是比较对象的地址
hashCode()最重要的因素:无论何时,对同一个对象调用都应该生成相同的值
4、如果将自定的类型对象放入HashSet、HashMap、Hashtable、LinkedHashSet、LinkedHashMap这此散列集合时,一定需要重写equals与hashCode方法,这样在放入进去之后还能查找出来。如果放入其他非散列类型的集合时,其实只需要
重写equals就可以了。