浅触数组列表

来源:互联网 发布:厄米特矩阵的逆也是 编辑:程序博客网 时间:2024/06/08 01:19
一、数组列表相对于数组而言具有以下特点:
  1.大小不固定,数组列表长度可以根据元素的个数动态变化,节约存储空间。
  2.存储类型可以不同,使用更灵活。

  3.可以定义多种方法,如添加元素、 删除元素、获取元素、获取大小、插入元素、修改元素、是否包含某个元素、列表合并。


二、泛型:定义数组列表,对于某个数据类型不确定,可以用泛型表示,等到创建对象的时候确定具体的对象。
  1.在定义类时类名后用< >表示,< >中常用的有: E:元素  K:key   V:值
      如:public class MyArrayList<E>{    }
  2. 在创建对象时候类名后< >中用明确指定具体类型。
      如:MyArrayList<String> list = new MyArrayList<String>();
  3.泛型只能表示引用类型,例如int类型可以用Integer表示。
      如:MyArrayList<int> list = new MyArrayList<int>();  // error
          MyArrayList<int> list = new MyArrayList<int>();  // ok

三、方法的实现
  1. 添加元素
         创建一个新的数组,大小比原数组大一,通过循环将原数组存入新数组,在最后存入新元素。
  2. 删除元素
         创建一个新的数组,长度比原数组小一,循环存入要删除元素之前和之后的元素
  3. 获取元素
         return (E)data[index];
  4. 获取大小
         return size;
  5. 插入元素
         创建一个新的数组,长度比原数组大一,循环存入插入元素位置之前的元素,存入要插入的元素,循环存入要插入元素位置之后的元素
  6. 修改元素
         创建一个新的数组,长度和原数组一样,循环存入要修改元素之前的元素,存入要修改的元素,循环存入要修改元素之后的元素
  7. 是否包含某个元素
         遍历数组,对比元素,存在返回true,否则,返回false
  8. 列表合并
         创建一个新的数组,长度是两个要合并的列表长度之和,循环存入两个原列表的元素。


总结:通过对方法的了解,可以得出结论: 
  1. ArrayList可以高效的访问元素
  2. 在ArrayList中间插入或删除一个元素意味着这个列表中剩余的元素都会被移动,插入的元素越靠前,变化越大。LinkList插入删除只需要改变插入元素之前和之后的两个指针的指向

  因此需要频繁地使用插入删除操作时可以使用底层为链表实现的LinkList,在需要读取元素时,ArrayList更为高效。

 以上理解有不对的地方,求告知。


0 0
原创粉丝点击