Android开发--List与ArrayList区别

List是一个接口,而ArrayList是一个类。 
ArrayList继承并实现了List。 
所以List不能被构造,但可以向上面那样为List创建一个引用,而ArrayList就可以被构造。 
List list;     //正确   list=null; 
List list=new List();    //   是错误的用法

List list = new ArrayList();这句创建了一个ArrayList的对象后把上溯到了List。此时它是一个List对象了,有些ArrayList有但是List没有的属性和方法,它就不能再用了。 
而ArrayList list=new ArrayList();创建一对象则保留了ArrayList的所有属性。 
这是一个例子: 
import java.util.*;

public class TestList{ 
public static void main(String[] args){ 
List list = new ArrayList(); 
ArrayList arrayList = new ArrayList();

list.trimToSize(); //错误,没有该方法。
arrayList.trimToSize();   //ArrayList里有该方法。

}

编译一下就知道结果了。

如果这个样子: 
List a=new ArrayList(); 
则a拥有List与ArrayList的所有属性和方法,不会减少 
如果List与ArrayList中有相同的属性(如int i),有相同的方法(如void f()), 
则a.i是调用了List中的i 
a.f()是调用了ArrayList中的f(); 
--------------------------------------------------------------- 
问题的关键: 
为什么要用 List list = new ArrayList() ,而不用 ArrayList alist = new ArrayList()呢?
问题就在于List有多个实现类,现在你用的是ArrayList,也许哪一天你需要换成其它的实现类,如 LinkedList或者Vector等等,这时你只要改变这一行就行了: 
List list = new LinkedList(); 其它使用了list地方的代码根本不需要改动。 
假设你开始用 ArrayList alist = new ArrayList(), 这下你有的改了,特别是如果你使用了 ArrayList特有的方法和属性。

地区用 List arr = new ArrayList();定义;行业用 ArrayListarr = new ArrayList();定义;则说明,行业里用到了ArrayList的特殊的方法.

另外的例子就是,在类的方法中,如下声明:
private void doMyAction(List list){}
这样这个方法能处理所有实现了List接口的类,一定程度上实现了泛型函数.

如果开发的时候觉得ArrayList,HashMap的性能不能满足你的需要,可以通过实现List,Map(或者Collection)来定制你的自定义类.

转载自:http://www.cnblogs.com/aisiteru/articles/1151874.html

时间: 2024-10-13 11:08:09

Android开发--List与ArrayList区别的相关文章

Android开发-ZoomButton和ImageButton区别

ZoomButton控件是Android提供的一个缩放按钮,此控件的类ZoomButton继承自ImageButton类,有人会说ZoomButton能够实现的功能,用ImageButton不是都能够实现吗? 下面我们来说一个ZoomButton和ImageButton区别,在功能上两者都能实现缩放功能, 区别是: ZoomButton当你一直按着不放的时候,它能够持续的对一个内容进行不断的缩放, 然而ImageButton只能当松开按钮的时候才能执行对一个内容的缩放, 所以要想实现按下按钮不送

Android开发之深入理解泛型extends和super的区别

摘要: 什么是泛型?什么是擦除边界?什么是上界限定或下界限定(子类型限定或超类型限定)?什么是类型安全?泛型extends关和super关键字结合通配符?使用的区别,两种泛型在实际Android开发中有什么用处? 一.什么是泛型? 泛型,大概的意思是指没有指定具体的类型的类或方法,以泛型的形式传入一个类中或方法中,在Java编程(Android编程)里面使用一对尖括号和一个大写字母表示,例如: //泛型类 public interface List<E>{} //泛型方法,类型参数位于返回类型

细说ios开发和Android开发有什么区别?谁更有优势?

ios开发和安卓开发的市场分析:      首先iOS系统是应用在iPhone.iPad等高端设备上的,iOS市场占有的份额虽然不高,但是用户的消费能力比较强,生态圈较好有利于开发者直接获利.Android向大众人群普及,市场份额占有率虽然很高,但是用户群体的人均消费能力普遍弱,但是依托于用户的基数使得Android有资本跟iOS抢占市场份额. ios开发与安卓开发区别比较:      iOS:基于Unix闭源的操作系统,核心语言是Objective-C,相关的语言还有C语言(重点在数据结构和算

Android开发中.toString()和String.valueOf()的区别

其实,很多时候效果是差不多的 但是,有的时候用.toString()会报错,而用String.valueOf()就不会报错 这说明两者是有差别的,在细微之处~ .toString()和String.valueOf()的区别在哪呢? jdk的文档中对.toString()有说明: String.valueOf(Object   o)  if the argument is null, then a string equal to "null ";  otherwise,  the val

Android开发新手必备16个知识

Android开发新手必备,这是我在麦子学院论坛里面看见的,觉得很不错,分享给大家: 1.Activity生命周期,横竖屏切换时候Activity状态变化. 生命周期: 完成的生命周期: 即从一个Activity出现到消失,对应的周期方法是:onCreate到onDestroy : 启动: onCreate()->onStart()->onResume三个方法: BACK键: 当我们按BACK键时,我们这个应用程序将结束,这时候我们将先后调用onPause()->onStop()->

Android开发性能优化总结(一)

安卓开发应用首先要讲究良好的用户体验,如果一款软件卡顿现象严重,不流畅,经常崩溃,那么将给用户带来极不良好的体验,从而损失用户. 在实际开发和学习中,我总结了一下关于安卓性能的优化,供大家参考交流. 应用程序的性能问题体现在很多方面, 比如第一次启动速度慢,或者进入某一界面速度慢:动画执行过程不流畅,或者动画执行卡顿时间长:ListView列表滑动过程中卡顿,不流畅:应用程序自定义的某特定界面执行速度慢:响应某一用户事件时长时间无响应(ANR):操作数据库时,执行大量数据的增删改查操作,执行速度

android开发中应该注意的问题

1. Activity可继承自BaseActivity,便于统一风格与处理公共事件,构建对话框统一构建器的建立,万一需要整体变动,一处修改到处有效. 2. 数据库表段字段常量和SQL逻辑分离,更清晰. 3. 全局变量放全局类中,模块私有放自己的管理类中,不要相信庞大的管理的东西会带来什么好处,可能是一场灾难. 4. 如果数据没有必要加载,私有模块数据务必延迟初始化,谨记为用户节省内存,总不会有坏处. 5. 异常抛出,集中到合适的位置处理,不要抛出来异常立即捕获,搞的到处是catch. 6. 地址

Android开发艺术探索读书笔记——进程间通信

1. 多进程使用场景 1) 应用某些模块因为特殊需求需要运行在单独进程中.如消息推送,使消息推送进程与应用进程能单独存活,消息推送进程不会因为应用程序进程crash而受影响. 2) 为加大一个应用可使用的内存,需要多进程来获取多份内存空间. 2. 如何开启多进程 给四大组件(Activity.Service.Receiver.ContentProvider)在AndroidMainfest中指定android:process属性指定. 如果进程以":"开头的进程,代表应用的私有进程,其

Android开发艺术-第二章 IPC 机制

2.1 Android IPC 简介 IPC 意为进程间通信或者跨进程通信,线程是 CPU 调度的最小单元,是一种有限的系统资源.进程一般指一个执行单元.任何操作系统都需要相应的 IPC 机制.如 Windows 上可以通过剪切板 管道 和邮槽来进行:Linux 上可以通过命名管道 共享内容 信号量等来进行.在 Android 中最有特色的进程间通信方式就是 Binder 了,同时也支持 Socket 实现任意两个终端之间的通信. 2.2 Android 中的多进程模式 (1) 通过给四大组件指