javase基础复习攻略《七》
容器是什么?通俗的講容器指可以裝其它東西的器皿,前面我們提到的數(shù)組便是容器的一種,容器的概念在JAVA中便可以理解為用來(lái)存儲(chǔ)其它對(duì)象的器皿。本篇就讓我們一起來(lái)認(rèn)識(shí)一下JAVA為我們提供的容器類(lèi)。
1、容器API:
J2SDK提供的容器API位于java.util包內(nèi),容器API的類(lèi)圖結(jié)構(gòu)如下圖所示:
2、JAVA容器的組成:
Collection接口——定義了存取一組對(duì)象的方法,其子接口Set和List分別定義了存取方式。Set中的數(shù)據(jù)對(duì)象沒(méi)有順序但不可以重復(fù);List中的對(duì)象有順序且可以重復(fù),List又被細(xì)分為L(zhǎng)inkedList和ArrayList,從名字上應(yīng)該可以看出它的不同,LinkedList以鏈表的方式來(lái)存儲(chǔ)數(shù)據(jù),ArrayList則以數(shù)組的方式來(lái)存儲(chǔ)數(shù)據(jù)。說(shuō)完了Collection接口,下面我們看一下Map接口,Set和List都是單值存儲(chǔ),而Map則提供的是一種鍵值對(duì)的方式存儲(chǔ)數(shù)據(jù),鍵和值之間一一映射。
3、Collection接口定義的方法:
int size():容器中對(duì)象的數(shù)目
boolean isEmpty():是否為空
void clear():清空
boolean contains(Object element):是不是包含element對(duì)象
boolean add(Object element):添加element的對(duì)象
boolean remove(Object element):移除element對(duì)象
Iterator iterator():返回一個(gè)Iterator對(duì)象,用于遍歷容器中的對(duì)象
bollean containsAll(Collection c):是否包含c容器中的所有對(duì)象
boolean addAll(Collection c):把c容器中的所有對(duì)象添加到容器中
boolean removeAll(Collection c):從容器中移除C容器中存在的所有對(duì)象
boolean retainAll(Collection c):求當(dāng)前的集合類(lèi)與C容器的交集
Object[] toArray():把容器中的所有對(duì)象轉(zhuǎn)換到對(duì)應(yīng)的數(shù)組中
4、Iterator接口:
所有實(shí)現(xiàn)了Collection接口的容器都有一個(gè)iterator方法,用于返回一個(gè)實(shí)現(xiàn)了Itertaor的對(duì)象。Iterator對(duì)象稱(chēng)為迭代器,用于方便的實(shí)現(xiàn)對(duì)容器中元素的遍歷。
5、Iterator接口的方法:
boolean hasNext():判斷游標(biāo)右邊是否有元素
Object next():返回游標(biāo)右邊的元素,并將游標(biāo)移動(dòng)到下一個(gè)位置。
void remove():刪除游標(biāo)左邊的元素,并將游標(biāo)移動(dòng)到下一個(gè)位置,該方法一次只能執(zhí)行一次
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、增強(qiáng)的for循環(huán):
JAVA SDK1.5新增的一個(gè)方法,對(duì)于遍歷array或Collection的時(shí)候相當(dāng)簡(jiǎn)便。缺陷在于對(duì)于數(shù)組元素不能方便的訪問(wèn)下標(biāo)值;對(duì)于集合與Iterator相比不能方便的刪除容器中的元素。結(jié)論:除了簡(jiǎn)單的遍歷和讀取其中的內(nèi)容外,不建議使用增強(qiáng)的for循環(huán)。使用方法:
public class test {/*** @param 增強(qiáng)for循環(huán)*/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接口沒(méi)有提供額外的方法,但實(shí)現(xiàn)了Set接口的容器類(lèi)中的元素是沒(méi)有順序,并且不可以重復(fù)的。Set容器類(lèi)似于數(shù)學(xué)中集合的概念,J2SDK API中所提供的Set容器類(lèi)有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容器的中的元素沒(méi)有順序,可以重復(fù)。List容器中的元素都對(duì)應(yīng)一個(gè)整型序號(hào)記載著其在容器中的位置。J2SDK API中所提供的List容器類(lèi)有ArrayList和LinkList等。
9、常用方法:
void sort(List):對(duì)List中的元素進(jìn)行排序
void shuffle(List):對(duì)List中的元素進(jìn)行隨機(jī)排序
void reverse(List):對(duì)List中的元素進(jìn)行逆襲排序
void fill(List, Object):用一個(gè)特定的對(duì)象重寫(xiě)List容器
void copy(List dest, List src):將src容器中的元素拷貝到dest容器中
int binarySearch(List, Object):對(duì)順序的List容器,采用折半查找法尋找特定的對(duì)象
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);//隨機(jī)排序 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容器中的元素可以進(jìn)行排序,那么它是根據(jù)什么進(jìn)行的排序呢?所有可以進(jìn)行排序的類(lèi)都實(shí)現(xiàn)了java.lang.Comparable接口,Comparable接口只有一個(gè)方法:public int CompareTo(Object obj);方法。返回值:0代表this==obj;正數(shù)代表this>obj;負(fù)數(shù)代表this<obj。實(shí)現(xiàn)了Comparable接口的類(lèi)通過(guò)實(shí)現(xiàn)CompareTo方法從而定義該類(lèi)對(duì)象的排序方法。對(duì)姓名排序的例子:
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接口:
實(shí)現(xiàn)了Map接口的類(lèi)用來(lái)存儲(chǔ)鍵--值對(duì),Map中存儲(chǔ)的值通過(guò)鍵來(lái)標(biāo)識(shí),故而Map中的鍵不能重復(fù)。
12、Map常用方法:
Object put(Object key, Object value):添加元素
Object get(Object key):取出鍵值key對(duì)應(yīng)的value值
Object remove(Object key):移除鍵值key對(duì)應(yīng)的value值
boolean containsKey(Object key):判斷Map容器中是否存在鍵值key
boolean containsValue(Object value):判斷Map容器中是否存在value值
int size():返回Map容器的長(zhǎng)度
boolean isEmpty():判斷Map容器是否為空
void clear():清空Map容器
對(duì)于JAVA容器這一章就總結(jié)到這里,對(duì)于自動(dòng)打包和解包、泛型,由于文字描述的局限,就不再這里討論了,如果你有好的理解,還望留言討論。
?
轉(zhuǎn)載于:https://www.cnblogs.com/AndroidJotting/p/4337275.html
總結(jié)
以上是生活随笔為你收集整理的javase基础复习攻略《七》的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: u盘制作双系统启动盘及在移动硬盘上安装L
- 下一篇: 自定义View 进度条