`

List使用注意事项

 
阅读更多

1.我们通常使用的是ArrayList,但是为什么我们要申明为接口呢?

List<Person> listOfPerson = new ArrayList<Person>();//方法一

而不是直接申明成一个具体的实现类:

ArrayList<Person> listOfPerson = new ArrayList<Person>();//方法二

 这是因为List接口的实现类很多,ArrayList是其中的一个。如果代码中需要使用List的其它实现类,比如:LinkedList或者Vector。那么程序就很容易改写了。

 

尽管方法二的效率要比方法一高些,但是通常我们不这样做。而是申明为接口。

 

 

2.通常我们会用到的是将一个List赋给另外一个List,我们要注意下这两种做法的区别:

List<Person> myList1 = new ArrayList<Person>();
for(int i = 0; i < 100; i++)
{
            //do somthing...
        myList1.add(i);
}


Lsit<Person> myList2;

如果我这样写:
myList2 = new ArrayList<Person>();//没有必要了
myList2 = myList1;

表示:

让myList2指向myList1所指向的同一个对象。

所以myList2没有必要new一份出来,可以减少一个对象

如果要让myList2从myList1中拷贝一份过来,而不是简单的指向的话,那么
我们需要new一份myList2。并且调用addAll().将对象添加

myList2 = new ArrayList<Person>();//一定要
myList2.addAll(myList1);

 

 

分享到:
评论

相关推荐

    MFC list control 内嵌按钮以及样式

    4. **注意事项** - 性能优化:自绘可能会增加程序的计算量,特别是在大型列表中。为了提高性能,可以考虑缓存绘制结果,或者只在必要时进行重新绘制。 - 兼容性和适配:确保你的解决方案在不同系统和屏幕分辨率下...

    String[] list 相互转化

    ### 注意事项 1. **类型安全**:在转换时确保正确地处理类型转换,例如使用 `(String[])` 显式地将数组转换为 `String[]`。 2. **性能考量**:频繁地进行数组和列表之间的转换可能会对性能造成影响,特别是在处理...

    list转换成string数组

    ### 三、注意事项 - **数组长度**:当使用`new String[list.size()]`创建数组时,确保列表中的元素数量与数组长度一致,避免出现数组越界的问题。 - **性能考虑**:在转换过程中,尽量减少不必要的对象创建,尤其是...

    List转Json

    7. **注意事项**: - 对象中的字段需要有对应的getter和setter方法,Jackson才能正确地序列化和反序列化。 - 如果对象包含复杂的嵌套结构,可能需要使用注解(如`@JsonInclude`, `@JsonProperty`等)来控制序列化...

    ListControl支持右键菜单动态添加、删除行

    7. **注意事项**: - 在处理行操作时,确保同步更新数据源,如数据库或数组。 - 考虑线程安全,如果在多线程环境下操作`ListControl`,需要使用适当的同步机制。 通过以上步骤,我们可以实现一个具有动态添加、...

    C# 传入自定义列表List 到Oracle存储过程

    本文将详细讲解如何在C#中使用自定义列表(List)作为参数调用Oracle存储过程,以及实现这一功能的关键技术和注意事项。 首先,我们需要了解Oracle数据库中的PL/SQL类型,例如VARCAR2、NUMBER等,它们对应于C#中的...

    C# Array和ArrayList,List区别

    **注意事项** - `ArrayList` 中的元素默认为 `object` 类型,因此如果添加的是特定类型的元素(如 `int`),在使用时需要进行类型转换。 - `ArrayList` 可以动态地增加或减少元素数量。 #### 三、C# List&lt;T&gt; 类的...

    C#List<T>的应用记录

    5. **注意事项**: - 在处理List时,应意识到其引用传递的特性,特别是在多线程环境中,需要特别注意线程安全问题。 - 如果需要传递List的副本而非引用,可以使用`List&lt;T&gt;.GetRange`或`List&lt;T&gt;.Clone`等方法创建一...

    hibernate list集合映射

    **五、注意事项** 1. **索引维护**:当元素在List中移动时,需要同步更新索引字段。 2. **空值处理**:List集合可以为null,但不推荐,最好初始化为空List。 3. **级联操作**:通过`cascade`属性设置级联保存、...

    android之animation-list实现的简单粘稠加载效果使用demo

    五、优化与注意事项 1. 为了获得平滑的动画效果,帧图片应保持相同的尺寸,且数量适中,以避免性能问题。 2. 可以通过调整帧图片的`android:duration`属性来控制动画速度。 3. 如果需要在特定事件触发动画,可以在...

    CheckBoxList实现单选 C#(WEB)

    三、注意事项 - 要确保在IsPostBack检查之外注册事件处理程序,否则在页面回发时事件处理程序会丢失。 - 如果数据绑定在IsPostBack检查内,每次回发都会重新绑定数据,可能导致已选择的选项丢失。如果数据不需动态...

    关于LIstCtrl的一些总结

    #### 五、ListCtrl的使用技巧与注意事项 1. **性能优化**: - 在大量数据情况下,建议使用虚拟模式(`LVS_OWNERDATA`)来提高性能。 - 合理设置列宽以减少重绘次数。 2. **数据绑定**: - 使用模型视图控制器(MVC...

    list转成json对象

    通过阅读这篇博客,你可以获取更多关于列表转JSON的实践技巧和注意事项。 总结起来,将Python列表转换为JSON对象是通过`json.dumps()`函数实现的,这在数据交换和存储中非常实用。了解并掌握这一技能对于任何Python...

    matlab开发-Listfiles

    6. **注意事项**: - 确保指定的目录存在,否则会引发错误。 - 如果目录包含子目录,`listfiles`默认不会递归查找。如果需要递归搜索,可以配合使用`dir`函数和循环结构。 在MATLAB编程中,理解并熟练运用`list...

    免费下载 CheckBoxList遍历 方法

    ### 注意事项 - 在处理CheckBoxList时,需要注意的是,如果`AutoPostBack`属性设置为`true`,则每次复选框的状态发生改变都会触发回发,这可能会对性能造成影响。因此,在不必要的情况下,最好将其保持为`false`。 ...

    List转JSON的jar包

    5. **注意事项**: - 转换前,确保List中的每个元素都是可序列化的,即它们是基本类型或实现了`Serializable`接口的对象。 - 如果List包含复杂对象,这些对象需要有对应的getter和setter方法,以便转换工具能正确...

    linux下 Rclone+Alist实现挂载网盘(天翼云盘为例)-Alist

    **注意事项** 1. 当使用`rclone mount`时,确保你的系统支持FUSE(Filesystem in Userspace),因为Rclone依赖于它来挂载网盘。 2. 挂载的网盘可能需要持续的网络连接,断开连接可能导致数据丢失。 3. 为了安全起见...

    javaList的定义和方法

    **使用场景和注意事项:** - 当需要保持元素插入顺序,并且可能需要根据索引访问或操作元素时,使用`List`接口及其实现类。 - `List`接口中的方法`add`, `remove`, `set`等操作可能会影响迭代器,因此在遍历列表时应...

Global site tag (gtag.js) - Google Analytics