背景
因为项目需要重置初始状态,这时候需要清空原有的部分集合数据。这里我以list集合为例说明一下,其他的map集合都是可以相通的。
代码实现
private List<String> list = new ArrayList<>();
/**
* clear方法移除集合中的所有元素
*/
private void clear() {
list.add("1");
list.add("2");
list.add("3");
list.add("4");
Log.e("not clear", list.toString());
list.clear();// 调用clear方法清空集合中的所有数据
Log.e("clear size", "" + list.size());
}
以上代码运行后,打印的日志信息如下:
、
这里可以看到,原来集合中有数据,但是调用clear方法后,集合中的数据都被清空了,此时集合的大小为0,表示集合中没有元素存在。
clear方法源码解读
下面就是clear方法的源码:
/**
* Removes all of the elements from this list (optional operation).
* The list will be empty after this call returns.
*
* @throws UnsupportedOperationException if the <tt>clear</tt> operation
* is not supported by this list
*/
void clear();
上面的注释说的非常的明白:移除集合中的所有元素。这个集合调用该方法后集合会被置空。
好处分析
当然,想让一个集合为空有另外的方法,比如重新new一个集合。但是你重新new的时候,会创建一个新的对象,如果设计到需要多次清空集合的操作,你岂不是需要重新创建很多的对象吗?原来的对象分配的内存没被清空,又去新建一个对象分配一个新的内存,这样会对程序的性能造成一定的影响。
但是你调用clear方法清空集合中数据的时候,这时候对象在系统中分配的内存还是只有一个,不会重新去创建分配新的内存,这样可以极大的优化程序的性能。
===========================================================================