Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 没有任何内容的对象/空对象_Java_List_Collections_Map_Set - Fatal编程技术网

Java 没有任何内容的对象/空对象

Java 没有任何内容的对象/空对象,java,list,collections,map,set,Java,List,Collections,Map,Set,在开发过程中,我试图返回一个空列表 公共集合getElements(){ //返回元素 } 我寻找了一种简单的方法,我的第一个想法是创建一个没有任何元素的ArrayList并返回它。如以下示例所示: public Collection<?> getElements() { return new ArrayList<?>(); } 公共集合getElements(){ 返回新的ArrayList(); } 对于我来说,空列表的开销太大。对于上述“问题”,有一个

在开发过程中,我试图返回一个空列表

公共集合getElements(){ //返回元素 } 我寻找了一种简单的方法,我的第一个想法是创建一个没有任何元素的ArrayList并返回它。如以下示例所示:

public Collection<?> getElements() {
    return new ArrayList<?>();
}
公共集合getElements(){ 返回新的ArrayList(); }
对于我来说,空列表的开销太大。

对于上述“问题”,有一个非常简单的解决方案:

公共集合getElements(){ 返回集合。空_列表; } 返回一个空列表

注意:
它返回一个不可变的对象!仅当需要不可编辑的对象时,才可以使用它

类型安全
如果希望获得类型安全列表,则应使用以下示例[]:

List s=Collections.emptyList();
支持三种接口:

  • 名单:

    List l=Collections.EMPTY\u List;
    List s=Collections.emptyList();
    
  • 地图:

    Map m=Collections.EMPTY\u Map;
    Map ms=Collections.emptyMap();
    
  • 设置:

    Set s=Collections.EMPTY\u Set;
    Set ss=Collections.emptySet();
    
注意:

此方法的实现不需要创建单独的XXX对象 每次打电话。使用此方法的成本可能与 使用类似的命名字段。(与此方法不同,该字段不会 提供类型安全性。)


+1可能值得注意的是,返回的集合是不可变的,因此调用代码将无法添加到列表中。很多时候我需要该代码。:)这就是我贴这篇文章的原因。但我要补充一点,谢谢。为什么你回答自己的问题而不等待任何人也回答?每个人都可以自由添加自己的答案。;)我不介意分享我的知识,这可以在将来帮助别人。stackoverflow给出了一种可能性,为什么不使用它呢?如果你已经有了答案,我真的不明白这个问题的目的。还是为了赢得一些分数?
public Collection<?> getElements() {
    return new ArrayList<?>();
}
public Collection<?> getElements() {
    return Collections.EMPTY_LIST;
}
List<String> s = Collections.emptyList();
List l = Collections.EMPTY_LIST;
List<String> s = Collections.emptyList();
Map m = Collections.EMPTY_MAP;
Map<String> ms = Collections.emptyMap();
Set s = Collections.EMPTY_SET;
Set<String> ss = Collections.emptySet();