Collection接口相關集成關系如下圖

1。關於可迭代接口(Iterable)
可迭代接口僅包含一個方法,返回一個在一組T類型元素上進行迭代的迭代器:
public abstract Iteratoriterator();
迭代器Iterator接口的方法聲明如下:
public interface Iterator2。關於Collection接口{ public abstract boolean hasNext(); //如果仍有元素可以迭代,則返回 true public abstract E next(); //返回迭代的下一個元素 }
public interface List4。關於ListIteratorextends Collection { Iterator iterator(); //返回按適當順序在列表的元素上進行迭代的迭代器 ListIterator listIterator(); //返回此列表元素的列表迭代器(按適當順序)。 ListIterator listIterator(int index); //返回列表中元素的列表迭代器(按適當順序),從列表的指定位置開始 E set(int index, E element); //用指定元素替換列表中指定位置的元素(可選操作 E get(int index); //返回列表中指定位置的元素 void add(int index, E element); //在列表的指定位置插入指定元素(可選操作) List subList(int fromIndex, int toIndex) //返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之間的部分視圖。 }
public interface ListIterator5。關於ArrayList類extends Iterator { boolean hasNext(); //以正向遍歷列表時,如果列表迭代器有多個元素,則返回 true boolean hasPrevious(); //如果以逆向遍歷列表,列表迭代器有多個元素,則返回 true E next(); //返回列表中的下一個元素 E previous(); //返回列表中的前一個元素 int nextIndex(); //返回對 next 的後續調用所返回元素的索引 int previousIndex(); //返回對 previous 的後續調用所返回元素的索引 void add(E e); //新元素被插入到隱式光標前:該元素直接插入到 next 返回的下一個元素的前面,或者 previous 返回的下一個元素之後, //不影響對 next 的後續調用,並且對 previous 的後續調用會返回此新元素 void set(E e); //用指定元素替換 next 或 previous 返回的最後一個元素 void remove(); //從列表中移除由 next 或 previous 返回的最後一個元素 }
public void ensureCapacity(int minCapacity){} //增加此ArrayList實例的容量,以確保它至少能夠容納minCapacity所指定的元素數。
public void add(int index, E element){} //將指定的元素插入此列表中的指定位置
public int indexOf(Object o){} //返回此列表中首次出現的指定元素的索引,或如果此列表不包含元素,則返回 -1
protected void removeRange(int from, int to){} //移除列表中索引在 fromIndex(包括)和 toIndex(不包括)之間的所有元素
public void trimToSize(){} //將此 ArrayList 實例的容量調整為列表的當前大小。此操作用來最小化 ArrayList 實例的存儲量
(5)例如:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;
public class MyArrayList {
public static void main(String[] args) {
ArrayList< Integer> arraylist = new ArrayList(); //創建ArrayList對象,默認容量為10
for(int i = 0 ; i < 15 ; i++){ //初始化數組列表內容
arraylist.add(i);
}
Object[] arr =arraylist.toArray(); //獲取arraylist內容,存放在數組中
for (Object object : arr) { //遍歷數組,輸出
System.out.print( (int)object +"\t");
}
System.out.println();
System.out.println(arraylist.size()); //查詢此時arraylist元素個數
System.out.println(arraylist.contains(15)); //查詢是否包含某一元素
arraylist.add(5, -1); //指定位置插入元素
arraylist.add(15); //末尾插入元素
System.out.println(arraylist.contains(15)); //查詢是否包含某一元素
arr =arraylist.toArray(); //獲取arraylist內容,存放在數組中
for (Object object : arr) { //遍歷數組,輸出
System.out.print( (int)object +"\t");
}
System.out.println();
arraylist.set(5, 1); //改變指定位置的元素
arraylist.remove(16); //移除指定位置的元素
arraylist.remove(15);
arraylist.remove(arraylist.lastIndexOf(1));
Iterator iterator = arraylist.iterator(); //迭代器遍歷
while(iterator.hasNext()){
System.out.print(iterator.next()+"\t");
}
System.out.println();
arraylist.trimToSize(); //將此 ArrayList 實例的容量調整為列表的當前大小
ListIterator listiterator = arraylist.listIterator(); //使用ListIterator遍歷元素
System.out.println(listiterator.hasPrevious());
while(listiterator.hasNext()){
System.out.print( listiterator.next()+"\t" );
}
System.out.println();
while(listiterator.hasPrevious()){
System.out.print( listiterator.previous()+"\t" );
}
System.out.println();
listiterator.next(); //替換元素
listiterator.next();
listiterator.set(-1);
while(listiterator.hasPrevious()) //指針回到列表頭
listiterator.previous();
while(listiterator.hasNext()) //遍歷
System.out.print( listiterator.next()+"\t" );
System.out.println();
}
}
6。LinkedList類
public void addFirst(E e){} //將指定元素插入此列表的開頭。
public void addLast(E e){} //將指定元素添加到此列表的結尾
public E getFirst(){} //返回此列表的第一個元素
public E getLast(){} //返回此列表的最後一個元素
public E removeFirst(){} //移除並返回此列表的第一個元素
public E removeLast(){} //移除並返回此列表的最後一個元素
public ListIterator listIterator(int index){} //返回此列表中的元素的列表迭代器,從列表中指定位置開始
public Iterator descendingIterator(){} //返回以逆向順序在此雙端隊列的元素上進行迭代的迭代器。元素將按從最後一個到第一個的順序返回
(5)例如:
import java.util.Iterator;
import java.util.LinkedList;
public class MyLinkedList {
public static void main(String[] args) {
LinkedList linkedlist = new LinkedList();//創建鏈接列表對象
for(int i =0 ; i < 15 ; i++){ //初始化
linkedlist.add(i);
}
Iterator iterator = linkedlist.iterator();//獲取迭代器,遍歷鏈接列表
while(iterator.hasNext()){
System.out.print( iterator.next()+"\t" );
}
System.out.println();
linkedlist.addFirst(15);//開頭添加元素
System.out.println( linkedlist.removeLast() );//末尾刪除元素
iterator = linkedlist.iterator();//獲取迭代器,遍歷鏈接列表
while(iterator.hasNext()){
System.out.print( iterator.next()+"\t" );
}
System.out.println();
Iterator descendingiterator = linkedlist.descendingIterator(); //獲取逆向迭代器
while(descendingiterator.hasNext())
System.out.print( descendingiterator.next()+"\t" );
System.out.println();
}
}
7。Set接口
public interface Set8。HashSet類extends Collection { Iterator iterator(); //返回在此 set 中的元素上進行迭代的迭代器 int size(); //返回 set 中的元素數 }
public boolean add(E e){} //如果此 set 中尚未包含指定元素,則添加指定元素
public Iterator iterator(){} //返回對此 set 中元素進行迭代的迭代器
public boolean remove(Object o){} //如果指定元素存在於此 set 中,則將其移除
(4)例如
import java.util.HashSet;
import java.util.Iterator;
public class MyHashSet {
public static void main(String[] args) {
HashSet hashset = new HashSet(); //創建散列集合類對象
for(int i =0 ; i < 15 ; i++) //添加元素
hashset.add(i);
hashset.add(null);
Iterator iterator = hashset.iterator(); //獲取迭代器,遍歷hashset
while(iterator.hasNext())
System.out.print( iterator.next()+"\t" );
System.out.println();
System.out.println( hashset.size() ); //返回集合中的元素個數
System.out.println( hashset.contains(10) ); //測試集合
System.out.println( hashset.add(10) ); //添加重復元素
System.out.println( hashset.add(15) ); //添加不重復元素
System.out.println( hashset.remove(0) ); //移除已有元素
System.out.println( hashset.remove(0) ); //移除不存在元素
iterator = hashset.iterator(); //獲取迭代器,遍歷hashset
while(iterator.hasNext())
System.out.print( iterator.next()+"\t" );
System.out.println();
System.out.println( hashset.isEmpty() );
hashset.clear(); //清空集合
System.out.println( hashset.isEmpty() );
}
}
9。SortedSet接口Comparator comparator(); //返回對此set中的元素進行排序的比較器;如果此set使用其元素的自然順序,則返回null E first(); //返回此 set 中當前第一個(最低)元素 E last(); //返回此 set 中當前最後一個(最高)元素 SortedSet10。TreeSet類subSet(E from, E to); //返回此 set 的部分視圖,其元素從 from(包括)到 to(不包括) SortedSet headSet(E toElement); //返回此 set 的部分視圖,其元素嚴格小於 toElement SortedSet tailSet(E fromElement); //返回此 set 的部分視圖,其元素大於等於 fromElement
public class TreeSet(5)例如extends AbstractSet implements NavigableSet , Cloneable, Serializable{ public TreeSet(){} //構造一個新的空set,該set根據其元素的自然順序進行排序 public TreeSet(Comparator comparator){} //構造一個新的空 TreeSet,它根據指定比較器進行排序 public TreeSet(Collection c){} //構造一個包含指定 collection 元素的新 TreeSet,它按照其元素的自然順序進行排序 public TreeSet(SortedSet s){} //構造一個與指定有序 set 具有相同映射關系和相同排序的新 TreeSet E ceiling(E e){} //返回此set中 >=e 的最小元素;如果不存在這樣的元素,則返回 null E floor(E e){} //返回此set中 <=e 的最大元素;如果不存在這樣的元素,則返回 null E higher(E e){} //返回此set中 >e 的最小元素;如果不存在這樣的元素,則返回 null E lower(E e){} //返回此set中 comparator(){} //返回對此set中的元素進行排序的比較器;如果此set使用其元素的自然順序,則返回 null Iterator iterator(){} //返回在此 set 中的元素上按升序進行迭代的迭代器 Iterator descendingIterator(){} //返回在此 set 元素上按降序進行迭代的迭代器 }
/*例一*/
import java.util.Iterator;
import java.util.Random;
import java.util.TreeSet;
public class MyTreeSet {
public static void main(String[] args) {
TreeSet treeset = new TreeSet(); //創建樹集合對象
Random r = new Random();
for(int i =0 ; i < 15 ; i++) //添加元素
treeset.add( r.nextInt(50) );
Iterator iterator = treeset.iterator(); //獲取迭代器,正向遍歷元素
while(iterator.hasNext())
System.out.print( iterator.next()+"\t" );
System.out.println();
Iterator desciterator = treeset.descendingIterator();//獲取迭代器,逆向遍歷元素
while(desciterator.hasNext())
System.out.print( desciterator.next()+"\t" );
System.out.println();
}
}
/*例二*/
public class Person{
private int number = 0;
private int age = 0;
public Person(int number , int age) {
this.number = number;
this.age = age;
}
public int getAge() {
return age;
}
public int getNumber() {
return number;
}
@Override
public String toString() {
return "["+this.number+","+this.age+"]";
}
}
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;
import java.util.Random;
public class TreeSetCom implements Comparator{
public static void main(String[] args) {
TreeSet treeset = new TreeSet(new TreeSetCom()); //創建樹集合
Random age = new Random();
Random num = new Random();
for(int i = 0 ; i < 15 ; i++) //添加元素
treeset.add(new Person(num.nextInt(30), age.nextInt(20)));
Iterator iterator = treeset.iterator(); //獲取迭代器,遍歷元素
while(iterator.hasNext())
System.out.print( iterator.next().toString()+"--" );
System.out.println();
}
@Override
public int compare(Person arg0, Person arg1) {
return arg0.getAge() - arg1.getAge();
}
/* @Override
public int compare(Person arg0, Person arg1) {
return arg0.getNumber() - arg1.getNumber();
}*/
}
11。Vector類public class Vector(6)例如extends AbstractList implements List , RandomAccess, Cloneable, Serializable{ public Vector(){} //構造一個空向量,使其內部數據數組的大小為 10,其標准容量增量為零 public Vector(int initialCapacity){} //使用指定的初始容量和等於零的容量增量構造一個空向量 public Vector(int initialCapacity,int capacityIncrement){} //使用指定的初始容量和容量增量構造一個空的向量 public void ensureCapacity(int minCapacity){} //增加此向量的容量,以確保其至少能夠保存最小容量參數指定的組件數 public void setSize(int newSize){} //設置此向量的大小。如果新大小大於當前大小,則會在向量的末尾添加相應數量的 null 項; //如果新大小小於當前大小,則丟棄索引 newSize 處及其之後的所有項 public Enumeration elements(){} //返回此向量的組件的枚舉。返回的Enumeration對象將生成此向量中的所有項,第一項為索引0處的項,然後是索引1處的項... public void addElement(E obj){} //將指定的組件添加到此向量的末尾,將其大小增加 1。如果向量的大小比容量大,則增大其容量 public E get(int index){} //返回向量中指定位置的元素 public E set(int index,E element) //用指定的元素替換此向量中指定位置處的元素 protected void removeRange(int from,int to){} //從此 List 中移除其索引位於from(包括)與to(不包括)之間的所有元素 }
import java.util.Enumeration;
import java.util.Vector;
import java.util.Iterator;
import java.util.Random;
public class MyVector {
public static void main(String[] args) {
Vector vector = new Vector(); //創建無參向量對象
Random r = new Random(); //初始化向量對象
for(int i = 0 ; i < 9 ; i++)
vector.add( r.nextInt(30) );
Iterator iterator = vector.iterator(); //獲取迭代器,遍歷向量
while(iterator.hasNext())
System.out.print(iterator.next()+"\t");
System.out.println();
Enumeration enumeration = vector.elements(); //獲取向量組件的枚舉,遍歷向量
while( enumeration.hasMoreElements() )
System.out.print( enumeration.nextElement()+"\t" );
System.out.println();
System.out.println( vector.size() ); //對向量容量的操作
System.out.println( vector.capacity() );
vector.setSize(12);
System.out.println(vector.size());
vector.trimToSize();
System.out.println(vector.capacity());
vector.addElement(null);
vector.add(10, 9);
vector.add(13);
iterator = vector.iterator(); //獲取迭代器,遍歷向量
while(iterator.hasNext())
System.out.print(iterator.next()+"\t");
System.out.println();
System.out.println(vector.capacity());
System.out.println(vector.size());
}
}
12。Stack類public class Stack(3)例如extends Vector { public Stack(){} //創建一個空堆棧 public E push(E item){} //把項壓入堆棧頂部 public E pop(){} //移除堆棧頂部的對象,並作為此函數的值返回該對象 public E peek(){} //查看堆棧頂部的對象,但不從堆棧中移除它 public int search(Object o){} //對象到堆棧頂部的位置,以 1 為基數;返回值 -1 表示此對象不在堆棧中 public boolean empty(){} //測試堆棧是否為空 }
import java.util.Stack;
import java.util.Iterator;
public class MyStack {
public static void main(String[] args) {
Stack stack = new Stack(); //創建棧
for(int i = 0 ; i < 11 ; i++) //初始化棧
stack.add(i);
Iterator iterator = stack.iterator(); //獲取迭代器,遍歷棧
while(iterator.hasNext())
System.out.print( iterator.next()+"\t" );
System.out.println();
System.out.println( stack.search(4) ); //查詢元素到棧頂的距離
System.out.println( stack.search(15) );
System.out.println( stack.capacity() );
System.out.println( stack.size() );
System.out.println( stack.push(10) );//push and pop
System.out.println( stack.push(11) );
iterator = stack.iterator(); //獲取迭代器,遍歷棧
while(iterator.hasNext())
System.out.print( iterator.next()+"\t" );
System.out.println();
System.out.println( stack.peek() );
System.out.println( stack.pop() );
iterator = stack.iterator(); //獲取迭代器,遍歷棧
while(iterator.hasNext())
System.out.print( iterator.next()+"\t" );
System.out.println();
while( !stack.isEmpty() )//依次出棧
System.out.print( stack.pop()+"\t" );
System.out.println();
}
}