调用list的clear方法和new一个新的list相比,谁的性能更好

问题描述

List list = new ArrayList();list里有若干元素我现在想拿到一个空的list,是用list.clear()好,还是直接 list = new ArrayList();好。场景是在for循环里。PS. clear的实现其实也是遍历list内数组将各个元素赋值null,让gc去回收每个元素。

解决方案

尽量不要去重复创建对象在循环里,因为创建一个list需要分配内存并且需要分配一个默认大小集合这些都需要很大的开销,而清除与它比起来差别还是挺大的,你也可以自己测试下
解决方案二:
clear比较好。不然堆上面都是这些类了。
解决方案三:
从效率上来说差别不大,一般不用考虑。这两种方法最大的差别是,clear()后当前的变量和所有引用到这个list的变量都指向同一个空的list,而如果你new了一个list后再赋值,则当前的变量变为一个空list,而其他以前引用到初始list的则不受影响,还是之前存有数据的list。

时间: 2024-08-17 14:54:56

调用list的clear方法和new一个新的list相比,谁的性能更好的相关文章

nginx调用php-fpm出错解决方法和nginx配置详解_nginx

装完了nginx和php-5.5,配置好了nginx调用php后,就开始启动php-fpm. 使用下面的命令 复制代码 代码如下: /usr/local/php/sbin/php-fpm 就可以启动了. 在nginx的目录中创建个php的检测脚本index.php 结果在打开http://localhost/index.php 悲剧的发现居然无法打开 .查看日志文件,看了下报错原因 复制代码 代码如下: 2013/07/01 22:34:26 [error] 3214#0: *64 FastCG

jquery ui-两个弹出框,重定向不管用,页面不在跳转,方法和action都调用,就是不管用,下面是一个截图,

问题描述 两个弹出框,重定向不管用,页面不在跳转,方法和action都调用,就是不管用,下面是一个截图, 解决方案 用fiddler看下,你的数据有没有提交.特别是,你是客户端跳转还是服务器跳转.http://blog.csdn.net/class_horse/article/details/44264515 解决方案二: 你的提交用的ajax吧.ajax请求和普通浏览器请求不一样,ajax不会获取响应头控制浏览器进行跳转的,你需要ajax返回后检查内容,然后用location.href='xx

想写一个IIS扩展模块,如何在上下文中获得HTTP请求实体,POST方法和GET方法分别怎样获取?

问题描述 想写一个IIS扩展模块,如何在上下文中获得HTTP请求实体,POST方法和GET方法分别怎样获取? 具体点就是在IHttpContext还是IHttpRequest中用什么方法啊

Javascript数组的排序:sort()方法和reverse()方法

文章简介: JavaScript中的数组排序. JavaScript提供了sort()方法和reverse()方法,使得我们可以简单的对数组进行排序操作和逆序操作.其中: 1.JavaScript的sort()中如果没有指定比较函数,则默认会按照字符的编码顺序进行升序排序.也就是说如果我们想要对数值进行排序得到的不一定是我们想要的结果. 2.Javascript的reverse()将数组中的元素逆序. 先看看上面的第一点,如果有一个数组arr=[1,6,3,7,9],使用arr.sort()后,

ThinkPHP 中M方法和D方法的具体区别

M方法和D方法的区别 ThinkPHP 中M方法和D方法都用于实例化一个模型类,M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类.   使用M方法 如果是如下情况,请考虑使用 M方法:   对数据表进行简单的 CURD 操作而无复杂的业务逻辑时 只有个别的表有较为复杂的业务逻辑时,将 M方法 与实例化 CommonModel 类进行结合使用 M方法 甚至可以简单看着就是对参数表名对应的数据表的操作:   $User = M('User');  使用D方法 如果是如下

C#中的委托,匿名方法和Lambda表达式

简介 在.NET中,委托,匿名方法和Lambda表达式很容易发生混淆.我想下面的代码能证实这点.下面哪一个First会被编译?哪一个会返回我们需要的结果?即Customer.ID=5.答案是6个First不仅被编译,并都获得正确答案,且他们的结果一样.如果你对此感到困惑,那么请继续看这篇文章. class Customer { public int ID { get; set; } public static bool Test(Customer x) { return x.ID == 5; }

LinQ---扩展方法和Lambda表达式

LinQ---扩展方法和Lambda表达式            扩展方法:                扩展方法使您能够向现有类型"添加"方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型.扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用.对于用 C# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异.          格式: public static class classA { pu

java线程中 start方法和run方法的区别和联系是什么

问题描述 java线程中 start方法和run方法的区别和联系是什么 java线程中 start方法和run方法的区别和联系是什么 start是启动一个线程到就绪状态 run是运行一个线程 要run一个线程必须先start一个线程,这么理解对不 解决方案 通过start启动线程,内部调用run,如果你直接调用run,就是同步的,会阻塞 解决方案二: run方法里写的是每个线程需要执行的代码 run 只是调用你自己写的run方法而已.根线程调用无关. start才是启动线程的方法 解决方案三:

ASP.NET MVC 5 学习教程:Edit方法和Edit视图详解

原文 ASP.NET MVC 5 学习教程:Edit方法和Edit视图详解 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 通过控制器访问模型的数据 生成的代码详解 使用 SQL Server LocalDB Edit方法和Edit视图详解 添加查询 Entity Framework 数据迁移之添加字段 添加验证 Details 和 Delete 方法详解 在本节中,我们继续研究生成的Edit方法和视图.