草庐IT

clearing

全部标签

java - 重新实例化 List 或调用 clear() 的更好做法

使用Java(1.6)是调用List上的clear()方法还是重新实例化引用更好?我有一个ArrayList,其中填充了未知数量的对象并定期“刷新”-处理对象并清除列表。一旦刷新,列表就会再次被填满。刷新发生在随机时间。列表中的数字可能很小(10个对象)或很大(数百万个对象)。那么“flush”调用c​​lear()还是newArrayList()更好?是否值得担心这类问题,还是应该让VM担心?我怎样才能查看Java的内存占用量来为自己解决这种问题?非常感谢任何帮助。 最佳答案 要关注的主要是other代码可能对列表有引用。如果现有

Java ArrayList clear() 函数

假设我有一个ArrayListdata;我正在向这个数组中添加一些数据,使用data.add()功能。假设我在这个数组中添加了10个字符串。数组的大小现在是10。如何销毁数组中的所有元素?data.clear()函数只是将所有10个元素设置为空。所以当我尝试添加另一个元素时,它只是在第11位。我只想从0开始;我可以使用for循环来替换所有数据,但我真的认为有一种方法可以清空ArrayList.是吗? 最佳答案 您的假设似乎不正确。在clear()之后,新添加的数据从索引0开始。 关于Ja

java - Java HashMap.clear() 和 remove() 内存有效吗?

考虑以下HashMap.clear()代码:/***Removesallofthemappingsfromthismap.*Themapwillbeemptyafterthiscallreturns.*/publicvoidclear(){modCount++;Entry[]tab=table;for(inti=0;i似乎,Entry对象的内部数组(table)永远不会缩小。因此,当我向map添加10000个元素并在调用map.clear()之后,它将在其内部数组中保留10000个空值。所以,我的问题是,JVM如何处理这个空数组,因此HashMap内存是否有效?

java - 为什么 Arrays.fill() 不再在 HashMap.clear() 中使用?

我注意到在HashMap.clear()的实现中有些奇怪。.这是它在OpenJDK7u40中的样子:publicvoidclear(){modCount++;Arrays.fill(table,null);size=0;}这就是OpenJDK8u40的样子:publicvoidclear(){Node[]tab;modCount++;if((tab=table)!=null&&size>0){size=0;for(inti=0;i我知道现在table对于空映射可以为null,因此需要在局部变量中进​​行额外的检查和缓存。但为什么是Arrays.fill()用for循环代替?似乎更改是在

key - 'MyhomePage({Key key, this.title}) : super(key: key);' in Flutter - what would be a clear explanation with an example?

在Flutter中,用一个例子可以清楚地解释什么?我的困惑是关于key,如下面的代码所示。MyHomepage({Keykey,this.title}):super(key:key); 最佳答案 代码是MyHomepage小部件的构造函数。{Keykey,this.title}它声明了两个可选的命名参数(可选的命名是因为{})其中第一个名称为key,类型为Key第二个是title字段类型为this.title并自动初始化this.title为传递的值。这是一个很好的语法糖,可以节省一些写作时间。:启动初始化列表。初始化列表允许一些人

java - ArrayAdapter.clear kotlin

我正在尝试学习kotlin,我想将我的一个android项目从java转换为kotlin。但我有一个问题overridefunonResponse(call:Call>?,response:Response>?){if(response!=null&&response.isSuccessful){vallist=response.body()cityAdapter.clear()if(list!=null&&!list.isEmpty()){cityAdapter.addAll(list)listView.visibility=View.VISIBLErecyclerView.visi

C++ vector::clear

vectordecoy;voidclear_decoy(){decoy.clear();vector(decoy).swap(decoy);}在上述方法中clear_decoy(),vector(decoy).swap(decoy);是什么意思请问是什么意思?方法是否清除decoy或不?谢谢! 最佳答案 我以前从未见过这种形式。我看过它写成:vector().swap(decoy);这意味着“创建一个新的空vector,并将其与现有的交换。vector(decoy).swap(decoy);要理解这一点,请分解。vector(dec

c++ - 为什么 std::queue 不支持 clear() 函数?

我有一个要求:对于一个函数,我将输入作为数字流。我的意思是,该函数在每次调用中都会被单个号码调用。我正在使用std::queue来存储数字流。只有在满足某些条件时,我才需要处理一组收集的数字。如果不满足条件,我需要将所有元素放入队列中,然后开始在其中存储新数字。为了清空队列,我找不到clear()方法。所以我是这样循环的:while(!q.empty())q.pop();我有一个有效的算法来清除std::queue在HowdoIclearthestd::queueefficiently?我的问题是:为什么std::queue不支持clear()函数?既然std::deque和std::

c++ - 为什么 vector::clear 不从 vector 中删除元素?

当我在std::vector上使用clear()时,它应该会破坏vector中的所有元素,但是相反,它没有。示例代码:vectortemp1(4);cout现在,我应该在尝试访问已清除的vector时遇到段错误,但它会填充那里的值(在我看来这是非常错误的)结果如下:40Printing.....343.50这正常吗?这是一个很难发现的错误,它基本上杀死了我几个月的代码。 最佳答案 您无权获得段错误。就此而言,段错误甚至不是C++的一部分。您的程序正在从vector中删除所有元素,并且您非法访问容器越界。这是未定义的行为,这意味着任何

c++ - 关于在 vector 上调用 clear 如何改变容量的标准说明了什么?

本网站暗示清除vector可能会改变容量:http://en.cppreference.com/w/cpp/container/vector/clearManyimplementationswillnotreleaseallocatedmemoryafteracalltoclear(),effectivelyleavingthecapacity()ofthevectorunchanged.但根据@JamesKanze的说法,这是错误的,清除的标准要求不会改变容量。标准是怎么说的? 最佳答案 根据您正在查看的标准版本,clear被定义