黑马程序员——关于List体系结构和特点

来源:互联网 发布:一洋seo管家 编辑:程序博客网 时间:2024/06/03 20:23
  ------- android培训java培训、期待与您交流! ----------

List特点及体系:
    元素有序,可以重复。
    |--ArrayList
    底层数据结构是数组,查询快,增删慢。
    线程不安全,效率高。
   |--LinkedList
    底层数据结构是链表,查询慢,增删快。
    线程不安全,效率高。
   |--Vector
    底层数据结构是数组,查询快,增删慢。
    线程安全,效率低。由于线程安全,所以查询的效率也低。一般不用。


 什么时候使用哪种具体的集合类呢?
     A:如果将来存储数据大部分就是为了显示操作,用ArrayList
     B:如果将来存储数据大部分在做变更操作,用LinkedList
     C:如果涉及到线程安全问题,用Vector

  如果你不知道用哪个,就用ArrayList。

ArrayList(掌握)

基本功能:Add(), Insert(), Delete(), Find().

 

LinkedList(掌握)
  特有功能:
    A:添加元素  addFrist()addLast()
    B:删除元素 removeFirst()  removeLast()
    C:获取元素getFirst()   getLast()

 

 Vector(了解)<基本已经不用这个>
 特有功能:
   A:添加元素: addElement() -- add()
   B:获取元素: elementAt() -- get()
   C:类似迭代器的功能:
     Enumeration elements()
     hasMoreElements()
     nextElement()

用ArrayList存储元素对象并遍历,代码体现:

ArrayList<String> array = new ArrayList<String>();

    array.add("haha");
    array.add("hehe");
    array.add("xixi");

    Iterator<String> it = array.iterator();
    while(it.hasNext())
    {
     String s =  it.next();
     System.out.println(s);
    }


总结:List : 次序是List最重要的特点:它保证维护元素特定的顺序。List为Collection添加了许多方法,使得能够向List中间插入与移除元素(这只推荐LinkedList使用。)一个List可以生成ListIterator,使用它可以从两个方向遍历List,也可以从List中间插入和移除元素。

  ArrayList : 由数组实现的List。允许对元素进行快速随机访问,但是向List中间插入与移除元素的速度很慢。ListIterator只应该用来由后向前遍历ArrayList,而不是用来插入和移除元素。因为那比LinkedList开销要大很多。

  LinkedList : 对顺序访问进行了优化,向List中间插入与删除的开销并不大。随机访问则相对较慢。(使用ArrayList代替。)还具有下列方法:addFirst(), addLast(), getFirst(), getLast(), removeFirst() 和 removeLast(), 这些方法 (没有在任何接口或基类中定义过)使得LinkedList可以当作堆栈、队列和双向队列使用。


  细节问题:
   A:并发修改问题
       解决方案:
            要么全部使用集合对象,要么全部使用迭代器(ListIterator)对象操作。
  B:集合可以存储基本数据类型,其实存储不是基本数据类型,而是装箱后的对象。

0 0