1.背景
在某些情况下,我们经常需要发挥一个空的集合对象,比如说在数据查询时,并不需要发挥一个NULL或是异常,那么就可以返回一个空的集合对象。
JDK提供了两个方式来返回集合对象,那么两者有何区别呢?那就看代码吧!
2.源码解析
//EMPTY_LIST 是Collections定义的一个静态属性,是一个类变量,可以直接返回使用
public static final List EMPTY_LIST = new EmptyList();
//这个是emptyList的代码
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
从上面我们可以看出,emptyList不过是对EMPTY_LIST做了一个泛型支持。这点上我们就可以很清晰的了解两者不同的使用场景了!若是不需要泛型的情况,可以直接使用Collections,反之则使用emptyList().
3.使用
对于EMPTY_LIST就不多介绍了,我们可以直接使用Collections.EMPTY_LIST。
对于Collections.emptyList()的使用有点需要注意的地方。
若是定义了一个变量来保存这个空集合的话,那么没有问题。
List<Person> emptyPersonList = Collections.emptyList(); //编译器会自动转化。
若是在某个场景下需要将空对象进行赋值那么就需要如下写法
organization.setPersonList(Collections.<Person> emptyList());
organization.setPersonList(Collections.<Person> emptyList());
4.BTW
虽然在源码中存在
public int size() {return 0;}
public Object get(int index) {
throw new IndexOutOfBoundsException("Index: "+index);
}
但是对于我们无论是
for (int i =0 ; i < ...)还是 for (Person p : personList)都不会调用到get(int index)这个方法,可以放心使用!前一种方式我们可以很好理解,因为首先是调用了size().后者foreach的实现原理还需要考究下!
分享到:
相关推荐
- `Collections.EMPTY_LIST`、`Collections.emptyList()`:返回一个不可变的空List实例。 - `Collections.EMPTY_MAP`、`Collections.emptyMap()`:返回一个不可变的空Map实例。 - `Collections.EMPTY_SET`、`...
`Collections`类中提供了一些枚举常量,如`Collections.EMPTY_LIST`、`Collections.EMPTY_MAP`和`Collections.EMPTY_SET`,用于表示空的集合。 6. **集合工具类**: `Collections`类提供了许多静态方法,用于对...
4. 返回空集合:Collections.emptyList() 方法可以返回空集合。 例如: private List fun(List list) { if (list == null || list.size() == 0) { return Collections.emptyList(); } //业务处理 return list;...
9)....Added: EMemLeaks._ReserveOutOfMemory to control reserve size of out of memory errors (default is 50 Mb) 10)..Added: "MinLeaksLimitObjs" option (EMemLeaks unit) 11)..Added: Fatal memory problem ...
最后,Collections工具类还包含一些实用的静态工厂方法,如`emptyList()`、`emptyMap()`和`singletonMap(K key, V value)`,它们分别用于创建空列表、空映射以及只有一个键值对的映射。 总结起来,Collections工具...
在Python编程中,数据结构是组织、存储和处理大量数据的关键工具。为了高效地操作数据,程序员经常需要自定义类来封装常见的数据结构,如列表、队列、栈、堆、链表、图等。本篇文章将深入探讨Python中如何通过类封装...
return Collections.emptyList(); } } ``` 在这个`ActivityManagerDemo`项目中,可能包含了实现上述功能的示例代码,包括如何请求权限、初始化UsageStatsManager、查询并处理使用统计信息等。通过学习和理解这个...
创建空集合有多种方法,本文将介绍两种常见的方法:new ArrayList()和Collections.emptyList()。 二、 Java判断集合是否为空 Java判断集合是否为空有多种方法,例如isEmpty()、size()==0、list==null等。这些方法...
Collections.emptyList()); } } ``` 最后,你可以像操作普通数据库一样,使用SpringDataJPA或MyBatis等ORM框架进行数据操作。Sharding-JDBC会在背后自动处理分库分表和读写分离。 通过以上步骤,你就成功地在...
using System.Collections; using System.Net; using System.Net.Sockets; using System.Threading; using Microsoft.Win32; using System.Security.Permissions; //Afin de lire et 閏rire des donn閑s dans la ...
在Python中,我们可以使用列表(List)来简单实现栈。以下是一个简单的栈类(Stack)的实现: ```python class Stack(object): def __init__(self): self.__items = [] def push(self, item): self.__items....
self.__list.append(item) def pop(self): return self.__list.pop() def peek(self): if self.__list: return self.__list[-1] else: return None def is_empty(self): return self.__list == [] ...
1.1. Arrays 类的常用方法 1.2.1. emptyList()/emptyMap()/emptySet() 方法 1.2.7. synchroniz
List<String> emptyList = Collections.emptyList(); ``` 4. 匿名内部类 利用匿名内部类可以一次性初始化List,这种方式在代码中看起来比较简洁。 ```java List<String> names = new ArrayList() {{ add("Tom"); ...
同样,对于集合(List、Set、Map、Iterator)和其他容器,可以使用`Collections.emptyList()`, `Collections.emptySet()`, `Collections.emptyMap()`等静态工厂方法来返回空实例。 3. **流(Stream)**:对于流,可以...
return Collections.emptyList(); } int totalElements = list.size(); int totalPages = (totalElements + pageSize - 1) / pageSize; if (currentPage > totalPages) { currentPage = totalPages; } int ...
`emptyList()`, `emptyMap()`, `emptySet()` 这些方法分别返回不可变的空`List`、`Map`和`Set`实例,常用于初始化或作为默认值。 #### 8. `fill` 用指定元素替换`List`中的所有元素。语法为:`static <T> void ...
此外,Collections还包含了一些实用的工厂方法,如`Collections.singletonList()`, `Collections.emptyList()`和`Collections.emptySet()`,它们分别用于创建单元素、空的List、Set。这些方法返回的是不可变的集合,...
return Collections.emptyList(); } @Override public boolean clearMetaColumnCache() { return true; } }); // 设置通知服务 Delegate.getDelegate().setNoticeService(s->{}); // 具有子查询的sql ...