Core Java学习笔记 集合

Posted on 2010-05-12 17:03 eric_xu 阅读(308) 评论(0)  编辑  收藏 所属分类: Java
 

Collection是集合类的上级接口,继承与他的接口主要有Set 和List.
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

Java类库中用于集合类的基本接口是Collection接口。Collection接口扩展自Iterable接口,因此,可以在任何集合类中使用for each循环。

publicinterface Iterable<T> {

    Iterator<T> iterator();

}

publicinterface Collection<E> extends Iterable<E>

CollectionIterator是泛型接口,任何集合都可以使用其方法。Collection接口中的方法:

public static <E> boolean contains(Collection<E> c, Object obj)

   for (E element : c)

      if (element.equals(obj))

         return true;

   return false;

}

iterator方法返回一个实现了Iterator接口的对象。

publicinterface Iterator<E> {

    boolean hasNext();

    E next();

    void remove();

}

Java集合类库将接口与实现分离,Queue

publicabstractclass AbstractCollection<E> implements Collection<E>

一个集合类可以从AbstractCollection类扩展

除了Map结尾的类,其他类都实现了Collection接口。

ArrayList动态数组

ArrayList的内部实现是基于内部数组Object[],所以从概念上讲,它更像数组,但LinkedList的内部实现是基于一组连接的记录,所以,它更像一个链表结构。

ArrayList的前面或中间插入数据时,必须将其后的所有数据相应的后移,这样必然要花费较多时间,所以,当你的操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList会提供比较好的性能;

而访问链表中的某个元素时,就必须从链表的一端开始沿着连接方向一个一个元素地去查找,直到找到所需的元素为止,所以,当你的操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了。

如果在编程中,两种情形交替出现,这时,可以考虑使用List这样的通用接口,而不用关心具体的实现,在具体的情形下,它的性能由具体的实现来保证。

Java中每个链表实际上是双重链表。链表是有序的。List接口和实现了该接口的LinkedList类。

interface ListIterator<E> extends Iterator<E>

ListIterator中的add方法,添加元素在迭代器之前,remove方法删除上一个被访问的元素。Set方法取代使用nextprevious方法最后访问的元素。

ArrayList封装了一个动态重新分配的数组。

Vector类的所有方法都是同步的。可以用两个线程安全地访问Vector对象。代码会在同步操作上浪费相当多的时间。ArrayList类的方法不是同步的。

hashCode()方法必须和equals方法相兼容。如果a.equals(b)ture,ab必有相同的散列码。散列吗是通过对象实例字段产生的整数。

TreeSet是一个有序集合,插入时可以是任意顺序,输出时为排序后的顺序。红黑树。默认情况下,TreeSet假设你插入的元素实现了Comparable接口。

publicinterface Comparable<T> {

    publicint compareTo(T o);

}

PriorityQueue是一种能够在以任意顺序插入元素后,再按排序顺序读取这些元素的数据结构。优先级队列和TreeSet一样,其所持有的元素可以是实现了Comparable接口的类的对象,也可以是在构造器中提供的Comparator对象。

HashMapTreeMap都实现了Map接口,映射表用于存放键/值对。

HashSet类,实现了基于散列表的散列集。不存在重复元素的集合。

散列映射表用于对键进行散列,树状映射表对于键的全局顺序进行排序,并组成搜索树。



 

框架就是一个类集合,它形成了创建高级功能的基础。框架包含许多超类,这些超类拥有非常有用的功能、策略和机制。框架用户建立的子类可以扩展类的功能,而不是重新创建基本的机制。

两个用于集合的基本接口,CollectionMap

Set接口和Collection接口,Set不允许有重复元素。List接口提供随机访问的方法,ArrayListLiknkedList的访问算法效率是不同的。



只有注册用户登录后才能发表评论。


网站导航:
 

posts - 37, comments - 5, trackbacks - 0, articles - 0

Copyright © eric_xu