Java Collection Framework:Java集合框架
在Java语言中,Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口的类)。所有抽象出来的数据结构和操作(算法)统称为Java集合框架。
Javav程序员在具体应用时,不必考虑数据结构和算法实现细节,只需要用这些类创造出来一些对象,然后直接应用就可以了。大大提高了编程效率。
对集合操作的工具类:
Java提供了java.Util.Collections和java.util.Arrays两个工具类简化了对集合的操作。
(注意:java.util.Collection是一个接口,是Java集合层次的根接口。java.util.Collections是一个对集合提供一些操作的工具类)
java.util.Collections提供了一些static方法用来操作或创建Collection,Map集合。
java.util.Arrays主要提供static方法来对数组进行操作。
线程安全的类:
Vector:比ArrayList多了线程同步机制。
Stack:堆栈类。
Hashtable:比HashMap多了线程安全。
Collection接口是所有集合接口的积累,提供了集合接口的通用操作。
public interface Collection<E> extends Iterable<E> {
// Basic operations
int size();
boolean isEmpty();
boolean contains(Object element);
boolean add(E element); //optional
boolean remove(Object element); //optional
Iterator<E> iterator();
// Bulk operations
boolean containsAll(Collection<?> c);
boolean addAll(Collection<? extends E> c); //optional
boolean removeAll(Collection<?> c); //optional
boolean retainAll(Collection<?> c); //optional
void clear(); //optional
// Array operations
Object[] toArray();
<T> T[] toArray(T[] a);
}
List是一个顺序的Collection(通常被称作序列)。通常也代表一个线性表的数据结构。List可以包含重复元素。List接口基本功能如下:
public interface List<E> extends Collection<E> {
// Positional access
E get(int index);
E set(int index, E element); //optional
boolean add(E element); //optional
void add(int index, E element); //optional
E remove(int index); //optional
boolean addAll(int index,
Collection<? extends E> c); //optional
// Search
int indexOf(Object o);
int lastIndexOf(Object o);
// Iteration
ListIterator<E> listIterator();
ListIterator<E> listIterator(int index);
// Range-view
List<E> subList(int from, int to);
}
Set是一个不包含重复元素的无序集合(Collection)。Set接口中的函数都是从Collection继承而来。但限制了add的使用,使其不能添加重复元素。
public interface Set<E> extends Collection<E> {
// Basic operations
int size();
boolean isEmpty();
boolean contains(Object element);
boolean add(E element); //optional
boolean remove(Object element); //optional
Iterator<E> iterator();
// Bulk operations
boolean containsAll(Collection<?> c);
boolean addAll(Collection<? extends E> c); //optional
boolean removeAll(Collection<?> c); //optional
boolean retainAll(Collection<?> c); //optional
void clear(); //optional
// Array Operations
Object[] toArray();
<T> T[] toArray(T[] a);
}
Map是Java提供的一个接口。Map是一种包含键值对的元素的集合。Map不能包含重复的键,并可以通过键实现对值得快速访问。
public interface Map<K,V> {
// Basic operations
V put(K key, V value);
V get(Object key);
V remove(Object key);
boolean containsKey(Object key);
boolean containsValue(Object value);
int size();
boolean isEmpty();
// Bulk operations
void putAll(Map<? extends K, ? extends V> m);
void clear();
// Collection Views
public Set<K> keySet();
public Collection<V> values();
public Set<Map.Entry<K,V>> entrySet();
// Interface for entrySet elements
public interface Entry {
K getKey();
V getValue();
V setValue(V value);
}
}
public interface Map<K,V> {
// Basic operations
V put(K key, V value);
V get(Object key);
V remove(Object key);
boolean containsKey(Object key);
boolean containsValue(Object value);
int size();
boolean isEmpty();
// Bulk operations
void putAll(Map<? extends K, ? extends V> m);
void clear();
// Collection Views
public Set<K> keySet();
public Collection<V> values();
public Set<Map.Entry<K,V>> entrySet();
// Interface for entrySet elements
public interface Entry {
K getKey();
V getValue();
V setValue(V value);
}
}