javase基础复习攻略《七》
容器是什么?通俗的講容器指可以裝其它東西的器皿,前面我們提到的數組便是容器的一種,容器的概念在JAVA中便可以理解為用來存儲其它對象的器皿。本篇就讓我們一起來認識一下JAVA為我們提供的容器類。
1、容器API:
J2SDK提供的容器API位于java.util包內,容器API的類圖結構如下圖所示:
2、JAVA容器的組成:
Collection接口——定義了存取一組對象的方法,其子接口Set和List分別定義了存取方式。Set中的數據對象沒有順序但不可以重復;List中的對象有順序且可以重復,List又被細分為LinkedList和ArrayList,從名字上應該可以看出它的不同,LinkedList以鏈表的方式來存儲數據,ArrayList則以數組的方式來存儲數據。說完了Collection接口,下面我們看一下Map接口,Set和List都是單值存儲,而Map則提供的是一種鍵值對的方式存儲數據,鍵和值之間一一映射。
3、Collection接口定義的方法:
int size():容器中對象的數目
boolean isEmpty():是否為空
void clear():清空
boolean contains(Object element):是不是包含element對象
boolean add(Object element):添加element的對象
boolean remove(Object element):移除element對象
Iterator iterator():返回一個Iterator對象,用于遍歷容器中的對象
bollean containsAll(Collection c):是否包含c容器中的所有對象
boolean addAll(Collection c):把c容器中的所有對象添加到容器中
boolean removeAll(Collection c):從容器中移除C容器中存在的所有對象
boolean retainAll(Collection c):求當前的集合類與C容器的交集
Object[] toArray():把容器中的所有對象轉換到對應的數組中
4、Iterator接口:
所有實現了Collection接口的容器都有一個iterator方法,用于返回一個實現了Itertaor的對象。Iterator對象稱為迭代器,用于方便的實現對容器中元素的遍歷。
5、Iterator接口的方法:
boolean hasNext():判斷游標右邊是否有元素
Object next():返回游標右邊的元素,并將游標移動到下一個位置。
void remove():刪除游標左邊的元素,并將游標移動到下一個位置,該方法一次只能執行一次
public class Iter {/*** @param Interator接口*/public static void main(String[] args) {Collection coll = new HashSet();coll.add(new Integer(1));coll.add(new Integer(2));coll.add(new Integer(3));Iterator it = coll.iterator();while(it.hasNext()){//判斷下一位置是否為空Integer i = (Integer) it.next();if(!i.equals(new Integer(1))){System.out.println(i);}else{it.remove();//移除 }}} }6、增強的for循環:
JAVA SDK1.5新增的一個方法,對于遍歷array或Collection的時候相當簡便。缺陷在于對于數組元素不能方便的訪問下標值;對于集合與Iterator相比不能方便的刪除容器中的元素。結論:除了簡單的遍歷和讀取其中的內容外,不建議使用增強的for循環。使用方法:
public class test {/*** @param 增強for循環*/public static void main(String[] args) {Collection<String> coll = new ArrayList<String>();coll.add(String.valueOf("a"));coll.add(String.valueOf("b"));coll.add(String.valueOf("c"));for(String str : coll){System.out.println(str);}} }7、Set接口:
Set接口是Collection接口的子接口,Set接口沒有提供額外的方法,但實現了Set接口的容器類中的元素是沒有順序,并且不可以重復的。Set容器類似于數學中集合的概念,J2SDK API中所提供的Set容器類有HashSet和TreeSet等。
public class test {/*** @param Set接口*/public static void main(String[] args) {Collection coll = new HashSet();coll.add("hello");coll.add("word");coll.add(new Integer(100));System.out.println(coll);} }8、List接口:
List接口是Collection接口的子接口,List容器的中的元素沒有順序,可以重復。List容器中的元素都對應一個整型序號記載著其在容器中的位置。J2SDK API中所提供的List容器類有ArrayList和LinkList等。
9、常用方法:
void sort(List):對List中的元素進行排序
void shuffle(List):對List中的元素進行隨機排序
void reverse(List):對List中的元素進行逆襲排序
void fill(List, Object):用一個特定的對象重寫List容器
void copy(List dest, List src):將src容器中的元素拷貝到dest容器中
int binarySearch(List, Object):對順序的List容器,采用折半查找法尋找特定的對象
public class test {/*** @param List接口*/public static void main(String[] args) {List l1 = new LinkedList();List l2 = new LinkedList();for(int i=0; i<5; i++){l1.add(i+1);}for(int i=0; i<5; i++){l1.add('a');}System.out.println(l1);//原始順序Collections.shuffle(l1);//隨機排序 System.out.println(l1);Collections.reverse(l1);//倒序排序 System.out.println(l1);Collections.sort(l1);//排序 System.out.println(l1);System.out.println(Collections.binarySearch(l1, 3));//折半查找Collections.copy(l2, l1);//拷貝 System.out.println(l2);} }10、Comparable接口:
List容器中的元素可以進行排序,那么它是根據什么進行的排序呢?所有可以進行排序的類都實現了java.lang.Comparable接口,Comparable接口只有一個方法:public int CompareTo(Object obj);方法。返回值:0代表this==obj;正數代表this>obj;負數代表this<obj。實現了Comparable接口的類通過實現CompareTo方法從而定義該類對象的排序方法。對姓名排序的例子:
public class Name implements Comparable{/*** @param Comparable接口*/private String lastName;private String fastName;public String getLastName() {return lastName;}public void setLastName(String lastName) {this.lastName = lastName;}public String getFastName() {return fastName;}public void setFastName(String fastName) {this.fastName = fastName;}public int compareTo(Object arg0) {Name name = (Name)arg0; int lastCmp = lastName.compareTo(name.lastName);return (lastCmp!=0 ? lastCmp : fastName.compareTo(name.fastName));} }11、Map接口:
實現了Map接口的類用來存儲鍵--值對,Map中存儲的值通過鍵來標識,故而Map中的鍵不能重復。
12、Map常用方法:
Object put(Object key, Object value):添加元素
Object get(Object key):取出鍵值key對應的value值
Object remove(Object key):移除鍵值key對應的value值
boolean containsKey(Object key):判斷Map容器中是否存在鍵值key
boolean containsValue(Object value):判斷Map容器中是否存在value值
int size():返回Map容器的長度
boolean isEmpty():判斷Map容器是否為空
void clear():清空Map容器
對于JAVA容器這一章就總結到這里,對于自動打包和解包、泛型,由于文字描述的局限,就不再這里討論了,如果你有好的理解,還望留言討論。
?
轉載于:https://www.cnblogs.com/AndroidJotting/p/4337275.html
總結
以上是生活随笔為你收集整理的javase基础复习攻略《七》的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: u盘制作双系统启动盘及在移动硬盘上安装L
- 下一篇: PHP中的include、include