Android基础知识

2017-05-02  本文已影响15人  稀有皮皮虾丶

ps:基础知识薄弱,一问三不知. 遂有此文章 根据问题 结合网上查询到各种大神的解释加上自己的理解来整理一片文章,供加固记忆

1. Array,ArrayList,List

Array :

数组在内存中是连续存储的,所以他的索引速度非常快,而且他的赋值与修改也很简单。但是在声明的时候必须给出数组长度,而且无法动态修改数组的长度

ArrayList

ArrayList list = new ArrayList();
//新增数据
 list.Add("abc"); list.Add(123);
//修改数据
 list[2] = 345;
//移除数据
 list.RemoveAt(0);
//插入数据 
list.Insert(0, "hello world");

在我们使用ArrayList中的数据来处理问题的时候,很可能会报类型不匹配的错误,也就是说ArrayList不是类型安全的。既使我们保证在插入数据的时候都很小心,都有插入了同一类型的数据,但在使用的时候,我们也需要将它们转化为对应的原类型来处理。这就存在了装箱与拆箱的操作,会带来很大的性能损耗。

int i=123; object o=(object)i;

拆箱:object对象o的值赋给int类型的变量i

object o=123; int i=(int)o;

装箱与拆箱的过程是很损耗性能的。

List

正是因为ArrayList存在不安全类型与装箱拆箱的缺点,所以在C#2.0后出现了泛型的概念。而List类是ArrayList类的泛型等效类。它的大部分用法都与ArrayList相似,因为List类也继承了IList接口。最关键的区别在于,在声明List集合时,我们同时需要为其声明List集合内数据的对象类型。 比如:

List<int> list = new List<int>();
//新增数据
list.Add(123);
//修改数据 
list[0] = 345;
//移除数据
list.RemoveAt(0);

同时 List不能被构造,但可以向上面那样为List创建一个引用,而ListArray就可以被构造

List list;     //正确   list=null; 
List list=new List();    //   是错误的用法

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

LinkedList

ArrayList和LinkedList的用法区别:
LinkedList的优缺点:
上一篇 下一篇

猜你喜欢

热点阅读