`
MouseLearnJava
  • 浏览: 467160 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Collections.emptyXXX方法

    博客分类:
  • Java
阅读更多
从JDK 1.5开始, Collections集合工具类中预先定义了一些空集合:


    public static final <T> List<T> emptyList() {
        return (List<T>) EMPTY_LIST;
    }


    public static final <K,V> Map<K,V> emptyMap() {
        return (Map<K,V>) EMPTY_MAP;
    }


使用这些empty方法,可以使代码的可读性变得更好,假设有一个查询方法

public ResultSet query(String tableName, Map<String, Object> queryParams){
}


如果没有任何查询参数,在调用方法query时,我们可以直接用Collections.emptyMap(); 作为参数传递。一下子可以知道没有查询参数。而且没有产生NullPointerException的风险。

同时可以提高某些场景的性能和效率,比如下面这个场景:
验证用户在页面输入的数据,并将所有的错误信息显示在页面上( 需要返回一个List对象)。 如果用户输入的数据都是正确的话,我们可能采用new ArrayList<XXXError>()去处理没有error的场景。在这种情况下,直接直接采用return Collections.emptyList(); 代替new ArrayList<XXXError>(),将不需要每次都创建一个新的实例,分配新的空间。

下面添加几个JDK源码中使用emptyXXX方法的例子:

/**
     * Returns the list of ObjectNames of MBeans expected to be unregistered
     * due to a relation removal (only for relation removal).
     *
     * @return a {@link List} of {@link ObjectName}.
     */
    public List<ObjectName> getMBeansToUnregister() {
        List<ObjectName> result;
        if (unregisterMBeanList != null) {
            result = new ArrayList<ObjectName>(unregisterMBeanList);
        } else {
            result = Collections.emptyList();
        }
        return result;
    }


ForkJoinPool.java

/**
     * Attempts to cancel and/or stop all tasks, and reject all
     * subsequently submitted tasks.  Tasks that are in the process of
     * being submitted or executed concurrently during the course of
     * this method may or may not be rejected. This method cancels
     * both existing and unexecuted tasks, in order to permit
     * termination in the presence of task dependencies. So the method
     * always returns an empty list (unlike the case for some other
     * Executors).
     *
     * @return an empty list
     * @throws SecurityException if a security manager exists and
     *         the caller is not permitted to modify threads
     *         because it does not hold {@link
     *         java.lang.RuntimePermission}{@code ("modifyThread")}
     */
    public List<Runnable> shutdownNow() {
        checkPermission();
        shutdown = true;
        tryTerminate(true);
        return Collections.emptyList();
    }


原文链接http://www.wangmengjun.com/showArticleDetail.do?articleId=37

查看更多http://www.wangmengjun.com/
1
0
分享到:
评论
1 楼 朱德峰 2014-06-09  
嗯嗯。这就是规范啊。JDK就是JDK。

相关推荐

    commons-collections.jar

    commons-collections-20040616.jar, ...commons-collections.jar, commons-collections3-3.2.1.jar, commons-collections4-4.1-javadoc.jar, commons-collections4-4.1-src.zip, commons-collections4-4.1.jar

    java List 排序 Collections.sort

    当我们需要对List中的元素进行排序时,`Collections.sort()`方法就派上了用场。这个方法能够根据元素的自然顺序或者自定义的比较器进行排序。本文将深入探讨`Collections.sort()`的使用、原理以及如何自定义排序规则...

    iesi.collections.dll

    iesi.collections.dll是一个与C#编程语言和.Net框架紧密相关的动态链接库文件,它包含了用于处理集合操作的一系列类和方法。在.NET环境中,集合是存储和管理对象的主要方式,它们提供了灵活的数据组织和访问机制。...

    Collections.synchronizedList

    标题中的"Collections.synchronizedList"是指Java集合框架中的一个静态工厂方法,用于将任何List转换为线程安全的List。这个方法是Java中实现多线程环境下的集合操作的重要工具,确保在并发访问时数据的一致性和完整...

    kotlinx.collections.immutable,Kotlin的不可变集合原型.zip

    在Kotlin编程语言中,`kotlinx.collections.immutable`是一个重要的库,它提供了不可变集合的实现。不可变集合是一旦创建后就不能修改的集合,这种数据结构在多线程环境、函数式编程和构建安全的数据模型时非常有用...

    金陵科技学院软件院大二上Java高级1215Collections.docx

    1. **`Collections.reverse(List&lt;T&gt; list)`**:这个方法用于反转列表中的元素顺序。在示例代码中,`Collections.reverse(list)`将原本的`list`顺序"abc", "123", "xyz", "aaa", "abc"反向变为"abc", "aaa", "xyz", ...

    列举系统中的环境变量,listView1,System.Collections.DictionaryEntry EnValue in Environment.GetEnvironmentVariables()C#源代码

    列举系统中的环境变量,listView1,System.Collections.DictionaryEntry EnValue in Environment.GetEnvironmentVariables()C#源代码 用VisualStudio2008创建

    JSF开发包:commons-beanutils.jar+commons-collections.jar+commons-digester.jar+jsf-api.jar+jsf-impl.jar+jstl.jar+standard.jar

    JSF开发所必需包:花了很长时间才收集好,很费时,现已收集好,何不分享给大家,让大家节省时间做点有意义的事情呢?...commons-collections.jar commons-digester.jar jsf-api.jar jsf-impl.jar jstl.jar standard.jar

    java中Collections.sort排序详解

    Java中的Collections.sort排序是Java.util.Collections类中的一个静态方法,用于对列表进行排序。下面将详细介绍Collections.sort排序的使用和实现机制。 Collections.sort()方法的使用: Collections.sort()方法...

    Iesi.Collections.dll

    Iesi.Collections.dll

    Collections 随机排序方法Shuffle源码说明

    在Java编程语言中,`Collections.shuffle()`方法是一个非常实用的工具,它用于对集合中的元素进行随机排序。这个方法在处理各种数据集时,比如游戏中打乱卡片顺序、抽奖程序或者任何需要随机化顺序的场景,都发挥着...

    kotlinx.collections.immutable, Kotlin的不可变集合 Prototype.zip

    kotlinx.collections.immutable, Kotlin的不可变集合 Prototype Kotlin的不可变集合库 Kotlin的不可变集合接口和实现 Prototype 。有关详细信息,请参阅建议列表。Prototype实现基于 pcollections ( 版权 2015的作者...

    Java Collections.sort()实现List排序的默认方法和自定义方法

    Java Collections.sort()实现List排序的默认方法和自定义方法 Java Collections.sort()是Java语言中用于对List进行排序的方法,通过使用这个方法可以对List进行默认排序,也可以根据需要实现自定义的排序规则。 ...

    用Java集合中的Collections.sort方法如何对list排序(两种方法)

    在Java编程中,集合框架是处理数据的重要工具,而Collections.sort方法则是对列表(List)进行排序的关键函数。本文将深入探讨两种使用Collections.sort方法对List排序的方法。 首先,第一种方法是让List中的对象实现...

    详解Java中Collections.sort排序

    在Java编程语言中,`Collections.sort()`方法是一个非常重要的工具,它用于对集合中的元素进行排序。这个方法主要应用于`List`接口的实现类,如`ArrayList`和`LinkedList`等。`Collections.sort()`有两种主要的排序...

    Collections.shuffle()方法实例解析

    Collections.shuffle() 方法实例解析 Collections.shuffle() 方法是一个静态方法,位于 Java.util.Collections 类中,该方法用于对列表进行随机置换。它有两个重载方法,分别使用默认随机源和指定的随机源对列表...

Global site tag (gtag.js) - Google Analytics