Java--集合框架

1、集合框架的概述

集合和数组的区别:

》数组的 长度固定,集合长度可变

》数组只能通过下标访问元素,类型固定,而有的集合可以通过任意类型查找所映射的具体对象

Collection

 

Collection是集合接口 

   |————Set子接口:无序,不允许重复。    |————List子接口:有序,可以有重复元素。

    区别:Collections是集合类

    Set和List对比:
    Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。
    List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。

    Set和List具体子类:
    Set
     |————HashSet:以哈希表的形式存放元素,插入删除速度很快。

    List
     |————ArrayList:动态数组
     |————LinkedList:链表、队列、堆栈。

    Array和java.util.Vector
    Vector是一种老的动态数组,是线程同步的,效率很低,一般不赞成使用。

 (1) 单元素添加、删除操作: 
 
boolean add(Object o):将对象添加给集合 
 
boolean remove(Object o): 如果集合中有与o相匹配的对象,则删除对象o 
 
(2) 查询操作: 
 
int size() :返回当前集合中元素的数量 
 
boolean isEmpty() :判断集合中是否有任何元素 
 
boolean contains(Object o) :查找集合中是否含有对象o 
 
Iterator iterator() :返回一个迭代器,用来访问集合中的各个元素 
 
(3) 组操作 :作用于元素组或整个集合 
 
boolean containsAll(Collection c): 查找集合中是否含有集合c 中所有元素 
 
boolean addAll(Collection c) : 将集合c 中所有元素添加给该集合 

private List coursesToSelect;
Course[] course = {new Course("3", "Java编程"),new Course("4", "C++")};
coursesToSelect.addAll(Arrays.asList(course));

void clear(): 删除集合中所有元素 
 
void removeAll(Collection c) : 从集合中删除集合c 中的所有元素 
 
void retainAll(Collection c) : 从集合中删除集合c 中不包含的元素 
 
(4) Collection转换为Object数组 : 
 
Object[] toArray() :返回一个内含集合所有元素的array 
 
Object[] toArray(Object[] a) :返回一个内含集合所有元素的array。运行期返回的array
和参数a的型别相同,需要转换为正确型别。 

Collection不提供get()方法。如果要遍历Collectin中的元素,就必须用Iterator.

List接口:

面向位置的操作包括插入某个元素或 Collection 的功能,还包括获取、除去或更改元素
的功能。在 List 中搜索元素可以从列表的头部或尾部开始,如果找到元素,还将报告元素所
在的位置 : 
 
void add(int index, Object element): 在指定位置index上添加元素element 
 
boolean addAll(int index, Collection c): 将集合c的所有元素添加到指定位置index 
 
Object get(int index): 返回List中指定位置的元素 
 
int indexOf(Object o): 返回第一个出现元素o的位置,否则返回-1 
 
int lastIndexOf(Object o) :返回最后一个出现元素o的位置,否则返回-1 
 
Object remove(int index) :删除指定位置上的元素 
 
Object set(int index, Object element) :用元素element取代位置index上的元素,并且
返回旧的元素 

LinkedList类和ArrayList类:

LinkedList类添加了一些处理列表两端元素的方法。 

(1) void addFirst(Object o): 将对象o添加到列表的开头 
 
void addLast(Object o):将对象o添加到列表的结尾 
 
(2) Object getFirst(): 返回列表开头的元素 
 
Object getLast(): 返回列表结尾的元素 
 
(3) Object removeFirst(): 删除并且返回列表开头的元素 
 
Object removeLast():删除并且返回列表结尾的元素 
 
(4) LinkedList(): 构建一个空的链接列表 
 
LinkedList(Collection c): 构建一个链接列表,并且添加集合c的所有元素 
 
“使用这些新方法,您就可以轻松的把 LinkedList 当作一个堆栈、队列或其它面向端点的数
据结构。” 

Set接口:

Set 接口继承 Collection 接口,而且它不允许集合中存在重复项,每个具体的 Set 实现类
依赖添加的对象的 equals()方法来检查独一性。Set接口没有引入新方法,所以Set就是一
个Collection,只不过其行为不同。

Comparable接口和Comparator接口:

在“集合框架”中有两种比较接口:Comparable接口和Comparator接口。像String和Integer
等Java内建类实现 Comparable接口以提供一定排序方式,但这样只能实现该接口一次。对
于那些没有实现Comparable接口的类、或者自定义的类,您可以通过 Comparator接口来定
义您自己的比较方式。

Comparable接口 :

(1) int compareTo(Object o): 比较当前实例对象与对象o,如果位于对象o之前,返回负
值,如果两个对象在排序中位置相同,则返回0,如果位于对象o后面,则返回正值

 Comparator接口:

(1)int compare(Object o1, Object o2): 对两个对象o1和o2进行比较,如果o1位于o2
的前面,则返回负值,如果在排序顺序中认为o1和o2是相同的,返回0,如果o1位于o2的
后面,则返回正值 

 

posted @ 2017-02-15 16:44  Nyan  阅读(192)  评论(0编辑  收藏  举报