JavaSE09—Java类集框架
1. 类集接口
接口:
Collection接口:能操作对象组,它位于类集层次结构的顶层
List接口:拓展Collection去处理序列(对象的列表)
Set接口:拓展Collection去处理集合,集合必须包含唯一元素
SortedSet接口:拓展Set去处理排序集合
Collection接口是构造类集框架的基础,它表明所有类集都将拥有的核心方法:
boolean add(Object obj) 将obj加入到调用类集中。
boolean addAll(Collection c) 将c中的所有元素都加入到调用类集中
void clear() 从调用类集中删除所有元素
boolean contains(Object obj) 如果obj是调用类集中的一个元素,返回true
boolean equals(Object obj) 如果调用类集与obj相等,则返回true
int hashCode() 返回调用类集的散列码
boolean iterator() 返回调用类集的迭代程序
boolean remove(Object obj) 从调用类集中删除obj的一个实例
boolean isEmpty() 判断调用类集是否为空
boolean removeAll(Collection c) 从调用类集中删除c的所有元素
boolean retainAll(Collection c) 删除调用类集中除了包含在c中的元素之外的全部元素
int size() 返回调用类集中元素的个数
Object[] toArray() 返回一个数组,该数组包含了所有存储在调用类集中的元素
1) List接口
List接口拓展了Collection并声明存储一系列元素的类集的特性。使用一个基于0的下标,元素可以通过他们在列表中的位置被插入和访问。
方法:
void add(int index,Object obj) :将obj插入调用列表,插入位置的下标由index传递。
Boolean addAll(int index,Collecton c) :将c中的所有元素插入到调用列表中,插入位置由index传递
Object get(int index) :返回存储在调用类集内制定下标出的对象
int indexOf(Object obj) :返回调用列表中obj的第一个实例的下标。
int lastIndexOf(Object obj) :返回调用列表中obj的最后一个实例的下标。
ListIterator listIterator() :返回调用列表开始的迭代程序
ListIterator listIterator(int index) :返回调用列表在指定下标处开始的迭代程序
Object remove(int index):删除调用列表中由index指定位置的元素。
Object set(int index,Object obj) : 用obj对调用列表内由index指定的位置进行复制
List subList(int start,int end) :返回一个列表,该列表包括了调用列表中从start到end-1的元素
2) SortedSet接口
2. Collection接口
标准的Collection实现类如下:
AbstractCollection 实现大多数Collection接口
AbstractList 拓展AbstractCollection并实现大多数List接口
AbstractSequentialList
LinkedList 链表
ArrayList 连续表
AbstractSet Set接口
HashSet 散列表
TreeSet 实现存储树的一个集合
1) ArrayList集合
ArrayList类拓展AbstractList并执行List接口。ArrayList支持可随需要而增长的动态数组。
ArrayList的构造方法:
ArrayList()
ArrayList(Collection c)
ArrayList(int capacity)
范例:
public class ArrayListDemo
{
public static void main(String[] args){
ArrayList al = new ArrayList();
System.out.println("a1 的原始大小"+a1.size());
a1.add("C");
a1.add("H");
a1.add("I");
a1.add("N");
a1.add("A");
a1.add(1,"A2");
System.out.println("a1 的大小"+a1.size());
a1.remove("A2");
a1.remove(2);
System.out.println(a1);
}
}
2)LinkList类
LinkList类扩展AbstractSequestrialList类并实现List接口。它提供了一个链表的数据结构。
LinkList()
LinkList(Collection c)
使用addFirst()方法可以在列表头增加元素,使用addLast()方法可以在列表尾部增加元素。
void addFirst(Object obj)
void addLast(Object obj)
调用getFirst()方法可以获得第一个元素,调用getLast()方法可以获得最后一个元素。
为了删除可以用
Object removeFirst()
Object removeLasr()
3)HashSet类
HashSet扩展AbstractSet并且实现Set接口。它创建一个类集,该类集使用散列表进行存储,而散列表则可以通过使用成为散列法的机制来存储信息。
构造方法:
HashSet()
HashSet(Collection c)
HashSet(int capacity)
HashSet(int capacity,float fillRatio)
fillRatio->填充比,默认为0.75
范例:
public class HashSetDemo
{
public static void main(String[] args)
{
HashSet hs = new HashSet();
hs.add("F");
hs.add("U");
hs.add("C");
hs.add("K");
System.out.println(hs);
}
}
3) TreeSet类
TreeSet为使用树类来进行存储的Set接口提供了一个工具,对象按升序存储。访问和检索是很快的。对于存储了大量需要进行检索的排序信息,TreeSet是一个很好的选择。
构造方法:
TreeSet()
TreeSet(Collection c)
TreeSet(SortedSet as)
3. 通过迭代方法访问类集
iterator()是一个或者实现Iterator,或者实现ListIterator接口的对象。Iterator可以完成通过循环输出类集内容,从而获得或删除元素。
ListIterator扩展了Iterator,允许双向遍历列表,并且可以修改但愿。
在通过迭代方法访问类集之前,必须得到一个迭代方法。每一个Collection类都提供一个iterator()方法,该方法返回一个对类集的迭代方法。通过使用这个迭代方法对象,可以一次一个地访问类集中的每一个元素:
1. 通过调用类集的iterator()方法获得对类集的迭代方法。
2. 建立一个调用hasNext()方法的循环,只要hasNext()返回true,就进行循环迭代。
3. 在循环内部,通过调用next()方法来得到每一个元素。
范例:
public class IteratorDemo
{
public static void main(String[] args){
ArrayList a1 = new ArrayList();
a1.add("C");
a1.add("H");
a1.add("I");
a1.add("N");
a1.add("A");
Iterator itr = a1.iterator();
while(itr.hasNext())
{
Object element = itr.next();
System.out.print(element+" ");
}
}
}
4. 处理映射
映射(map)是一个存储关键字和值的关联,或者说是“关键字/值“对的对象。关键字必须是唯一的,但值是可以被复制的。
1) Map接口
Map接口映射唯一关键字到値。关键字(Key word)是以后用于检索值的对象。
2) SortedMap接口
SortedMap接口扩展了Map,它确保了各项按关键字升序排序。
3) Map.Entry接口
Map.Entry接口使得可以操作映射的输入。
映射类
AbstractMap:实现大多数的Map接口
HashMap:将AbstractMap扩展到实用散列表
TreeMap:将AbstractMap扩展到树
1) HashMap类
构造方法:
HashMap()
HashMap(Map m)
HashMap(int capacity)
HashMap(int capacity,float fillRatio)
2) TreeMap类