Java 中的 Collection 学习笔记(1)

Collection 来自与java.util包,是java中数据结构的封装的包。java

 

collection主要方法:

boolean add(Object o)添加对象到集合
boolean remove(Object o)删除指定的对象
int size()返回当前集合中元素的数量
boolean contains(Object o)查找集合中是否有指定的对象
boolean isEmpty()判断集合是否为空
Iterator iterator()返回一个迭代器
boolean containsAll(Collection c)查找集合中是否有集合c中的元素
boolean addAll(Collection c)将集合c中全部的元素添加给该集合
void clear()删除集合中全部元素
void removeAll(Collection c)从集合中删除c集合中也有的元素
void retainAll(Collection c)从集合中删除集合c中不包含的元素算法

大体讲解java集合的体系结构
List、Set、Map是这个集合体系中最主要的三个接口。数组


其中List和Set继承自Collection接口。
Set不容许元素重复。HashSet和TreeSet是两个主要的实现类。
List有序且容许元素重复。ArrayList、LinkedList和Vector是三个主要的实现类。
Map也属于集合系统,但和Collection接口不一样。Map是key对value的映射集合,其中key列就是一个集合。key不能重复,可是value能够重复。        HashMap、TreeMap和Hashtable是三个主要的实现类。
SortedSet和SortedMap接口对元素按指定规则排序,SortedMap是对key列进行排序。数据结构

  • List接口对Collection进行了简单的扩充,它的具体实现类经常使用的有ArrayList和LinkedList。你能够将任何东西放到一个List容器中,并在须要时从中取出。ArrayList从其命名中能够看出它是一种相似数组的形式进行存储,所以它的随机访问速度极快,而LinkedList的内部实现是链表,它适合于在链表中间须要频繁进行插入和删除操做。在具体应用时能够根据须要自由选择。前面说的Iterator只能对容器进行向前遍历,而ListIterator则继承了Iterator的思想,并提供了对List进行双向遍历的方法。

 

  • Set接口也是Collection的一种扩展,而与List不一样的时,在Set中的对象元素不能重复,也就是说你不能把一样的东西两次放入同一个Set容器中。它的经常使用具体实现有HashSet和TreeSet类。HashSet能快速定位一个元素,可是你放到HashSet中的对象须要实现hashCode()方法,它使用了前面说过的哈希码的算法。而TreeSet则将放入其中的元素按序存放,这就要求你放入其中的对象是可排序的,这就用到了集合框架提供的另外两个实用类Comparable和Comparator。一个类是可排序的,它就应该实现Comparable接口。有时多个类具备相同的排序算法,那就不须要在每分别重复定义相同的排序算法,只要实现Comparator接口便可。集合框架中还有两个很实用的公用类:Collections和Arrays。Collections提供了对一个Collection容器进行诸如排序、复制、查找和填充等一些很是有用的方法,Arrays则是对一个数组进行相似的操做。

 

  • Map是一种把键对象和值对象进行关联的容器,而一个值对象又能够是一个Map,依次类推,这样就可造成一个多级映射。对于键对象来讲,像Set同样,一个Map容器中的键对象不容许重复,这是为了保持查找结果的一致性;若是有两个键对象同样,那你想获得那个键对象所对应的值对象时就有问题了,可能你获得的并非你想的那个值对象,结果会形成混乱,因此键的惟一性很重要,也是符合集合的性质的。固然在使用过程当中,某个键所对应的值对象可能会发生变化,这时会按照最后一次修改的值对象与键对应。对于值对象则没有惟一性的要求。你能够将任意多个键都映射到一个值对象上,这不会发生任何问题(不过对你的使用却可能会形成不便,你不知道你获得的究竟是那一个键所对应的值对象)。Map有两种比较经常使用的实现:HashMap和TreeMap。HashMap也用到了哈希码的算法,以便快速查找一个键,TreeMap则是对键按序存放,所以它便有一些扩展的方法,好比firstKey(),lastKey()等,你还能够从TreeMap中指定一个范围以取得其子Map。键和值的关联很简单,用pub(Object key,Object value)方法便可将一个键与一个值对象相关联。用get(Object key)可获得与此key对象所对应的值对象。
相关文章
相关标签/搜索