今天在抄 Motan 的代码时才发现 java.util.Collections
有三个以 singleton 开头的方法:
-
public static <T> List<T> singletonList(T o)
:返回一个内部类SingletonList
的实例。 -
public static <T> Set<T> singleton(T o)
:返回一个内部类SingletonSet
的实例。 -
public static <K,V> Map<K,V> singletonMap(K key, V value)
:返回一个内部类SingletonMap
的实例。
这三个内部类都是非常高效的:
* SingletonList
和 SingletonSet
都用一个属性来表示拥有的元素,而不是用数组、列表来表示;SingletonMap
分别用两个属性表示 key/value;内存使用上更高效;
* 在方法的实现上也更高效,减少了循环。比如 size
方法都是直接返回 1 ;List.contains
方法是把参数与属性元素直接对比。
真是一种追求性能极限的精神!我们要充分利用好这些特性。
欢迎关注我的微信公众号: coderbee笔记,可以更及时回复你的讨论。