Java有一系列功能強大的可重用類,分別在不同的包中,這些包按功能可劃分為:語言包java.lang(language)、輸入/輸出包java.io、實用程序包java.util(utility)、小應(yīng)用程序包java.applet、圖形用戶接口包java.swing、java.awt和網(wǎng)絡(luò)包java.net等。有時人們稱前三種包為java的基礎(chǔ)包。
Java常用包的簡單介紹如下:
1)java.lang包 主要含有與語言相關(guān)的類,如Math類,System類。java.lang包由解釋程序自動加載,不需顯式說明,
2)java.io包 主要含有與輸入/ 輸出相關(guān)的類,這些類提供了對不同的輸入和輸出設(shè)備讀寫數(shù)據(jù)的支持,這些輸入和輸出設(shè)備包括鍵盤、顯示器、打印機、磁盤文件和網(wǎng)絡(luò)等。
3)java.util包 包括許多具有特定功能的類,有日期、向量、哈希表、列表和堆棧等。
4)java.swing包和java.awt包 提供了創(chuàng)建圖形用戶界面元素的類。通過這些元素,編程者可以控制所寫Applet或程序的外觀界面。該包中包含定義窗口、對話框、按鈕、復(fù)選框、列表、菜單、滾動條及文本域的類。
5)java.net包 含有與網(wǎng)絡(luò)操作相關(guān)的類,如TCP sockets、URL以及二進制碼向ASCII碼轉(zhuǎn)換的工具。
6)java.applet包 含有控制Hotjava瀏覽器的類,這些類可以控制HTML文檔格式、應(yīng)用程序中的聲音資源等,其中Applet類是用來創(chuàng)建包含于HTML頁內(nèi)的applet必不可少的類。
Java語言的核心部分就是java.lang包, 它定義了Java中的大多數(shù)基本的類。每個java程序都自動導(dǎo)入java.lang包,由此可見該包的重要性。
java.lang 包中包含了Object類,java.lang.Object類是Java中整個類層次結(jié)構(gòu)的根結(jié)點,這個軟件包還定義了基本數(shù)據(jù)類型的類:String、Boolean、Character、Byte、Integer、Short、Long、Float和Double等。這些類支持?jǐn)?shù)字類型的轉(zhuǎn)換操作。java.lang包中的其他類還有:
Class:為運行時搜集的信息,如對instanceof操作符提供支持。
Math:提供像PI 和E 這樣的數(shù)學(xué)常數(shù)及各種函數(shù)。
System:提供對操作系統(tǒng)的訪問,包括默認(rèn)的I/O流、環(huán)境變量、自動垃圾收集、系統(tǒng)時間和系統(tǒng)屬性,許多System方法可訪問Runtime類的方法。
Runtime:提供對操作系統(tǒng)的訪問,使用java.lang.Runtime 可以使應(yīng)用程序容易與它所運行的環(huán)境協(xié)調(diào)。
Thread:Thread和java.lang.Runnable接口協(xié)同作用提供對Java中多線程的支持。
Throwable:它是Java中所有異常(Exception)的基類,是java.lang.Exception、java.lang.Error和java.lang.RuntimeException的父類。應(yīng)用程序運行發(fā)生意外時,異常和錯誤類就拋出對象。
Integer 類是基本類型 int類型的包裝類。該類提供了多個方法,能在 int 類型和 String 類型之間互相轉(zhuǎn)換,還提供了處理 int 類型時非常有用的其他方法。
1)屬性:
static int MAX_VALUE:返回最大的整型數(shù);
static int MIN_VALUE:返回最小的整型數(shù);
static Class TYPE:返回當(dāng)前類型。
例:
System.out.println('Integer.MAX_VALUE: ' Integer.MAX_VALUE );
結(jié)果為:Integer.MAX_VALUE: 2147483647
2)構(gòu)造方法:
Integer(int value) :通過一個int類型的變量構(gòu)造對象;
Integer(String s) :通過一個String的類型構(gòu)造對象;
例:
Integer i = new Integer('1234');
生成了一個值為1234的Integer對象。
3)常用方法:
1’byteValue():取得用byte類型表示的整數(shù);
2’int compareTo(Integer anotherInteger) :比較兩個整數(shù)。相等時返回0;小于時返回負(fù)數(shù);大于時返回正數(shù)。
例:
Integer i = new Integer(1234);
System.out.println('i.compareTo: ' i.compareTo(new Integer(123)) );
結(jié)果為:i.compareTo: 1
3’int compareTo(Object o) :將該整數(shù)與其他類進行比較。如果o也為Integer類,進行方法2 的操作;否則,拋出ClassCastException異常。
4’int intValue() : 返回該整型數(shù)所表示的整數(shù)。
5’long longValue() :返回該整型數(shù)所表示的長整數(shù)。
6’static int parseInt(String s) :將字符串轉(zhuǎn)換成整數(shù)。s必須是時進制數(shù)組成,否則拋出NumberFormatException異常。
7’ static int parseInt(String s, int radix) :以radix為基數(shù)radix返回s的十進制數(shù)。所謂的基數(shù),就是“幾進制”。
8’short shortValue() :返回該整型數(shù)所表示的短整數(shù)。
9’static String toBinaryString(int i) :將整數(shù)轉(zhuǎn)為二進制數(shù)的字符串。
10’static String toHexString(int i) :將整數(shù)轉(zhuǎn)為十六進制數(shù)的字符串。
11’static String toOctalString(int i) :將整數(shù)轉(zhuǎn)為八進制數(shù)的字符串。
12’String toString() :將該整數(shù)類型轉(zhuǎn)換為字符串。
13’static String toString(int i) :將該整數(shù)類型轉(zhuǎn)換為字符串。不同的是,此為類方法。
14’static String toString(int i, int radix) :將整數(shù)i以基數(shù)radix的形式轉(zhuǎn)換成字符串。
例:
int i1 = 54321;
System.out.println('Integer.toString(int i,int radix): ' Integer.toString(i1,16) );
結(jié)果為:Integer.toString(int i, int radix): d431
Float、Double、Character等基本類型的類使用方法基本類似,這里就不再詳述,用到時查閱API即可。
在實際應(yīng)用中,經(jīng)常會遇到對字符串進行動態(tài)修改。StringBuffer類可以完成字符串的動態(tài)添加、插入和替換等操作。
1)構(gòu)造方法:
StringBuffer() :構(gòu)造一個沒有任何字符的StringBuffer類。
StringBuffer(int length) : :構(gòu)造一個沒有任何字符的StringBuffer類,并且,其長度為length。
StringBuffer(String str) :以str為初始值構(gòu)造一個StringBuffer類。
2)常用方法:
1’StringBuffer append(元素類型)
向字符串緩沖區(qū)“追加”元素,這個“元素”參數(shù)可以是布爾量、字符、字符數(shù)組、雙精度數(shù)、浮點數(shù)、整型數(shù)、長整型數(shù)對象類型的字符串、字符串和StringBuffer類等。如果添加的字符超出了字符串緩沖區(qū)的長度,Java將自動進行擴充。
2’int capacity() :返回當(dāng)前StringBuffer對象(字符串緩沖區(qū))的總空間,而非字符號串的長度。
3’char charAt(int index) :在當(dāng)前StringBuffer對象中取索引號為index的字符。第一個字符的索引為“0”
4’StringBuffer delete(int start, int end) :刪除當(dāng)前StringBuffer對象中以索引號start開始,到end結(jié)束的子串。
5’ StringBuffer deleteCharAt(int index) :刪除當(dāng)前StringBuffer對象中索引號為index的字符。
6’StringBuffer insert(int offset, 類型名 參數(shù)名)
在當(dāng)前StringBuffer對象中插入一個元素,在索引號offset處插入相應(yīng)的值。
7’StringBuffer reverse() :將字符串翻轉(zhuǎn)。
StringBuffer sb = newStringBuffer('0123456789');
System.out.println( 'sb.reverse(): ' sb.reverse() );
結(jié)果為:sb.reverse(): 9876543210
8’void setLength(int newLength) :重新設(shè)置字符串緩沖區(qū)中字符串的長度,如果newLength小于當(dāng)前的字符串長度,將截去多余的字符。
StringBuffer sb = newStringBuffer('0123456789');
sb.setLength(5);
System.out.println( 'sb: ' sb );
結(jié)果為:sb: 01234
9’String substring(int start) :取當(dāng)前StringBuffer對象中,從start開始到結(jié)尾的子串。
10’String substring(int start, int end) :取當(dāng)前StringBuffer對象中,從start開始到end的子串。
11’String toString() :將當(dāng)前StringBuffer對象轉(zhuǎn)換成String對象。
java.lang.Math類是標(biāo)準(zhǔn)的數(shù)學(xué)類,封裝了一些數(shù)學(xué)函數(shù)和常量。
1)三角函數(shù)
下面的三個方法接受一個double類型的且以弧度為單位的角度值,并返回相應(yīng)的運算結(jié)果。
1’sin(double a) 返回角度a的sin值;
2’cos(doublea) 返回角度a的cos值;
3’tan(doublea) 返回角度a的tan值;
下面的方法是反三角函數(shù):
4’asin(double r) 返回 sin值為r的角度值;
5’acos(double r) 返回 cos值為r的角度值;
6’atan(double r) 返回 tan值為r的角度值。
2)乘方
1’pow(double y,double x) 返回y的x次方,例如,Math.pow(2.0,3.0)返回結(jié)果為8.0;
2’exp(double x) 返回ex ;
3’log(double x) 返回x的自然對數(shù);
4’sqrt(double x) 返回x的平方根。
3)舍入
1’ceil(double a) 返回大于或等于a的最小整數(shù)值;
2’floor(double a)返回小于或等于a的最大整數(shù)值;
3’rint(double a) 返回舍入尾數(shù)后接近a的整型值;
4’round(float a) 返回舍入尾數(shù)后最接近a的整型值;
5’round(double a)返回舍入尾數(shù)后最接近a的長整型值。
4)其他
下面是幾個應(yīng)用于int、long、float和double類型的方法:
1’abs(a) 返回a的絕對值;
2’max(a,b)返回a和b的最大值;
3’min(a,b)返回a和b的最小值。
在 System 類中,有標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出和錯誤輸出流;可以實現(xiàn)對外部定義的屬性和環(huán)境變量的訪問、加載文件和庫的方法以及快速復(fù)制數(shù)組的方法等等。
System類不能被實例化。它有三個非常有用的對象:
static PrintStream err “標(biāo)準(zhǔn)”錯誤輸出流。
static InputStream in “標(biāo)準(zhǔn)”輸入流。
static PrintStream out “標(biāo)準(zhǔn)”輸出流。
常用的方法有:
static void arraycopy(Object src, int srcPos,Object dest, int destPos, int length) 從指定源數(shù)組中復(fù)制一個數(shù)組,復(fù)制從指定的位置開始,到目標(biāo)數(shù)組的指定位置結(jié)束。
static long currentTimeMillis() 返回以毫秒為單位的當(dāng)前時間。
static void exit(int status) 終止當(dāng)前正在運行的 Java 虛擬機。按照慣例,非零的狀態(tài)碼表明非正常終止。
static void gc() 運行垃圾回收器。
每個 Java 應(yīng)用程序都對應(yīng)一個 Runtime 類實例,應(yīng)用程序不能創(chuàng)建自己的 Runtime 類實例,但可以通過 getRuntime 方法獲取當(dāng)前運行時。
Runtime 類提供了很多方法,請閱讀JDK的相關(guān)文檔。
Java程序運行時,本身啟動了一個進程,在這個進程中如何啟動一個新進程呢?在Runtime中提供了一個exec方法,可以實現(xiàn)該功能。
java.util包提供了許多實用的類,如:日期、向量、哈希表、列表和堆棧等。
日期時間類是一個相對簡單、但又使用頻繁的類。利用日期時間類提供的方法,可以獲取當(dāng)前日期和時間,計算某年或某月的天數(shù),或者對當(dāng)前日期進行比較等。
1)構(gòu)造方法:
1’public Date()
這個構(gòu)造方法將把當(dāng)前日期和時間保存到所創(chuàng)建的Date實例中。
2’public Date(int year, int month, int date)
根據(jù)所給定的year、month、date參數(shù)創(chuàng)建一個Date 實例。利用此構(gòu)造方法,所創(chuàng)建的Date實例表示的日期與年(year)、月(month)、日(day)參數(shù)表示的日期等同。
3’public Date(int year, int month, int date, int hours, int minutes)
這個構(gòu)造方法類似于第2個方法,只不過這里還提供了具體的小時(hours)和分鐘(minutes)參數(shù),因而時間要更為精確。
4’public Date(int year, int month, int date, int hours,int minutes,intseconds)
這個構(gòu)造方法類似于第3個方法,所不同的是這里還提供了具體的秒(seconds)參數(shù),時間又精確了一些。
一旦創(chuàng)建了日期時間類的一個實例,就可以用它的方法來檢索有關(guān)日期和時間的信息。
2)方法:
1’public int getYear() 返回當(dāng)前日期中的年份。
2’public int getMonth() 返回當(dāng)前日期中的月份。
3’public int getDate() 返回當(dāng)前日期在月份中的日期值(1-31)。
4’public int getDay() 返回某天是星期幾。
5’public int getHours() 返回當(dāng)前日期中的小時數(shù)。
6’public int getMinutes() 返回當(dāng)前日期中的分鐘數(shù)。
7’public int getSeconds() 返回當(dāng)前日期中的秒數(shù)。
8’public boolean befor(Date when) 對日期實例所代表的時間和when進行比較。若比when早,返回true; 否則返回false
9’public boolean after(Date when) 對日期實例所代表的時間和when進行比較。若比when晚,返回true;否則返回false。
10’public boolean equal(Object obj) 比較兩個日期對象。若相等,則返回true;否則返回false。
11’public String toString() 返回當(dāng)前日期參數(shù)的字符串表示形式。注意:不同主機系統(tǒng)的日期表示形式不盡相同。
日期時間類的使用非常簡單,只需要不帶任何參數(shù)創(chuàng)建一個類實例,就可以生成一個代表當(dāng)前日期的類。如下所示:
Date today = new Date();
System.out.println(today.toString());
或者也可用一個更為簡單的方式:
System.out. println(today);
后一種方式中,println將自動調(diào)用toString方法,因而無需顯式調(diào)用。
1)構(gòu)造方法:
StringTokenizer(String str) :構(gòu)造一個用來解析str的StringTokenizer對象。java默認(rèn)的分隔符是“空格”、“制表符(‘\t’)”、“換行符(‘\n’)”、“回車符(‘\r’)”。
StringTokenizer(String str, String delim) :構(gòu)造一個用來解析str的StringTokenizer對象,并提供一個指定的分隔符。
StringTokenizer(String str, String delim, booleanreturnDelims) :構(gòu)造一個用來解析str的StringTokenizer對象,并提供一個指定的分隔符,同時,指定是否返回分隔符。
2)常用方法:
1’int countTokens() :返回nextToken方法被調(diào)用的次數(shù)。
2’boolean hasMoreTokens() :返回是否還有分隔符。
3’boolean hasMoreElements() :結(jié)果同2’。
4’String nextToken() :返回從當(dāng)前位置到下一個分隔符的字符串。
5’Object nextElement() :結(jié)果同4’。
6’String nextToken(String delim) :與4’類似,以指定的分隔符返回結(jié)果。
Random類的對象用于生成偽隨機數(shù)流
1)構(gòu)造方法:
Random():創(chuàng)建一個新的隨機數(shù)發(fā)生器。
Random(long seed) :用一個種子(長整型)創(chuàng)建一個隨機數(shù)發(fā)生器。
2)常用方法:
1’protected int next(int bits) :產(chǎn)生下一個偽隨機數(shù)。
2’boolean nextBoolean() :返回下一個從隨機發(fā)生器的系列中得到的均勻分布的布爾值。
3’void nextBytes(byte[] bytes) :產(chǎn)生隨機字節(jié)數(shù)組放到指定的數(shù)組中。
4’double nextDouble() :返回下一個從隨機發(fā)生器的系列中得到的均勻分布的0.0到1.0的雙精度類型值。
5’float nextFloat() :返回下一個從隨機發(fā)生器的系列中得到的均勻分布的0.0到1.0的浮點類型值。
6’double nextGaussian() :返回下一個從隨機發(fā)生器的系列中得到的符合均勻分布的0.0的平均數(shù)到1.0方差的高斯分布雙精度類型值。
7’int nextInt() :返回下一個從隨機發(fā)生器的系列中得到的均勻分布的整型值。
8’int nextInt(int n) :返回下一個從隨機發(fā)生器的系列中得到的均勻分布的0到指定整型數(shù)(n)之間的整型值。
9’long nextLong() :返回下一個從隨機發(fā)生器的系列中得到的均勻分布的長整型值。
10’void setSeed(long seed) :設(shè)置隨機數(shù)發(fā)生器的種子為一個長整型數(shù)。
這個類的對象使用一個48位的種子,如果這個類的兩個實例是用同一個種子創(chuàng)建的,并且,各自對它們以同樣的順序調(diào)用方法,則它們會產(chǎn)生相同的數(shù)字序列。
下面就對上面的介紹做一個實驗,尤其注意相同種子時的結(jié)果,如果用默認(rèn)的構(gòu)造方法構(gòu)造對象,他們是屬于同一個種子的。
例:Random類
import java.util.Random;
public class TestRandom{
publicstatic void main(String[] args){
Random r1 = new Random(50);
System.out.println('第一個種子為50的Random對象');
System.out.println('r1.nextBoolean():\t' r1.nextBoolean());
System.out.println('r1.nextInt():\t\t' r1.nextInt());
System.out.println('r1.nextDouble():\t' r1.nextDouble());
System.out.println('r1.nextGaussian():\t' r1.nextGaussian());
System.out.println('______________________________');
Randomr2 = new Random(50);
System.out.println('第二個種子為50的Random對象');
System.out.println('r2.nextBoolean():\t' r2.nextBoolean());
System.out.println('r2.nextInt():\t\t' r2.nextInt());
System.out.println('r2.nextDouble():\t' r2.nextDouble());
System.out.println('r2.nextGaussian():\t' r2.nextGaussian());
System.out.println('______________________________');
Random r3 = new Random(100);
System.out.println('種子為100的Random對象');
System.out.println('r3.nextBoolean():\t' r3.nextBoolean());
System.out.println('r3.nextInt():\t\t' r3.nextInt());
System.out.println('r3.nextDouble():\t' r3.nextDouble());
System.out.println('r3.nextGaussian():\t' r3.nextGaussian());
System.out.println('結(jié)果一目了然!');
}
}
結(jié)果:
第一個種子為50的Random對象
r1.nextBoolean(): true
r1.nextInt(): -1727040520
r1.nextDouble(): 0.6141579720626675
r1.nextGaussian(): 2.377650302287946
______________________________
第二個種子為50的Random對象
r2.nextBoolean(): true
r2.nextInt(): -1727040520
r2.nextDouble(): 0.6141579720626675
r2.nextGaussian(): 2.377650302287946
______________________________
種子為100的Random對象
r3.nextBoolean(): true
r3.nextInt(): -1139614796
r3.nextDouble(): 0.19497605734770518
r3.nextGaussian(): 0.6762208162903859
該類實現(xiàn)了List接口,用戶可以對List中每個元素的插入位置進行精確地控制。也可以根據(jù)元素的整數(shù)索引(在列表中的位置)訪問元素,并搜索列表中的元素。
與 set 不同,Vector通常允許重復(fù)的元素。
Vector 類可以實現(xiàn)可增長的對象數(shù)組。它的大小可以根據(jù)需要增大或縮小,以適應(yīng)創(chuàng)建 Vector 后進行添加或移除項的操作。
1)構(gòu)造方法:
Vector()構(gòu)造一個空向量,使其內(nèi)部數(shù)據(jù)數(shù)組的大小為 10,其標(biāo)準(zhǔn)容量增量為零。
Vector(Collection<? extends E> c) 構(gòu)造一個包含指定集合中的元素的向量,這些元素按其集合的迭代器返回元素的順序排列。
Vector(int initialCapacity)使用指定的初始容量和等于零的容量增量構(gòu)造一個空向量。
Vector(int initialCapacity, int capacityIncrement)使用指定的初始容量和容量增量構(gòu)造一個空的向量。
2)方法:
1’public void setSize(int newSize)設(shè)置此向量的大小。如果新大小大于當(dāng)前大小,則會在向量的末尾添加相應(yīng)數(shù)量的 null 項。如果新大小小于當(dāng)前大小,則丟棄索引 newSize 處及其之后的所有項。
2’public int capacity()返回此向量的當(dāng)前容量。
3’public int size()返回此向量中的組件數(shù)。
4’public boolean isEmpty()測試此向量是否不包含組件。
5’public int indexOf(Object elem)搜索給定參數(shù)的第一個匹配項,使用 equals 方法測試相等性。
6’public E elementAt(int index)返回指定索引處的組件。
7’public E firstElement()返回此向量的第一個組件(位于索引 0 處的項)。
8’public E lastElement()返回此向量的最后一個組件。
9’public void setElementAt(E obj, int index)將此向量指定 index 處的組件設(shè)置為指定的對象。丟棄該位置以前的組件。索引必須為一個大于或等于0 且小于向量當(dāng)前大小的值。此方法的功能與 set 方法的功能完全相同(后者是 List 接口的一部分)。請注意,set 方法將反轉(zhuǎn)參數(shù)的順序,與數(shù)組用法更為匹配。另外還要注意,set 方法將返回以前存儲在指定位置的舊值。
10’public void removeElementAt(int index)刪除指定索引處的組件。此向量中的每個索引大于或等于指定 index 的組件都將下移,使其索引值變成比以前小 1 的值。此向量的大小將減 1。
索引必須為一個大于或等于 0 且小于向量當(dāng)前大小的值。
11’public void insertElementAt(E obj,int index)將指定對象作為此向量中的組件插入到指定的 index 處。此向量中的每個索引大于或等于指定 index 的組件都將向上移位,使其索引值變成比以前大 1 的值。索引必須為一個大于或等于 0 且小于或等于向量當(dāng)前大小的值(如果索引等于向量的當(dāng)前大小,則將新元素追加到向量)。
12’public void addElement(E obj)將指定的組件添加到此向量的末尾,將其大小增加 1。如果向量的大小比容量大,則增大其容量。
此方法的功能與 add(Object) 方法的功能完全相同(后者是 List 接口的一部分)。
13’public boolean removeElement(Object obj)從此向量中移除變量的第一個(索引最小的)匹配項。如果在此向量中找到該對象,那么向量中索引大于或等于該對象索引的每個組件都會下移,使其索引值變成比以前小 1 的值。
此方法的功能與 remove(Object) 方法的功能完全相同(后者是 List 接口的一部分)。
14’public void removeAllElements()從此向量中移除全部組件,并將其大小設(shè)置為零。
此方法的功能與 clear 方法的功能完全相同(后者是List 接口的一部分)。
15’public E get(int index)返回向量中指定位置的元素。
16’public boolean add(E o)將指定元素追加到此向量的末尾。
17’public boolean remove(Object o)移除此向量中指定元素的第一個匹配項,如果向量不包含該元素,則元素保持不變。
18’public void add(int index,E element)在此向量的指定位置插入指定的元素。將當(dāng)前位于該位置的元素(如果有)及所有后續(xù)元素右移(將其索引加 1)。
19’public void clear()從此向量中移除所有元素。此調(diào)用返回后,向量將為空(除非拋出了異常)。
例:輸入一串?dāng)?shù)字,求每位的和
import java.util.*;
classTestVector{
public static void main(String args[]){
intb=0,sum=0;
Vector<Integer> v=new Vector<Integer>();//<>括號內(nèi)指明該集合存儲元素的類型
System.out.println('please inputnumber:');
while(true){
try{
b=System.in.read();
}
catch(Exception e){
}
if(b=='\r'||b=='\n')break;
else {
int num=b-'0';
v.addElement(new Integer(num));
}
}
for(int i=0;i<v.size();i ){
sum =((Integer)(v.elementAt(i))).intValue();
}
System.out.println('totalis:' sum);
}
}
ArrayList類大致上等同于 Vector 類,也實現(xiàn)了List接口,但是此類是不同步的,而Vector類是同步的,每個 ArrayList 實例都有一個容量。該容量是指用來存儲列表元素的數(shù)組的大小,隨著向ArrayList 中不斷添加元素,其容量也自動增長。
1)構(gòu)造方法:
ArrayList()構(gòu)造一個初始容量為 10 的空列表。
ArrayList(Collection<? extends E> c)構(gòu)造一個包含指定 collection 的元素的列表,這些元素是按照該 collection 的迭代器返回它們的順序排列的。
ArrayList(int initialCapacity)構(gòu)造一個具有指定初始容量的空列表。
2)常用方法:
boolean add(E o) 將指定的元素追加到此列表的尾部。
void add(int index, E element)將指定的元素插入此列表中的指定位置。
boolean addAll(Collection<? extends E> c)按照指定 Collection 的迭代器所返回的元素順序,將該 Collection 中的所有元素追加到此列表的尾部。
boolean addAll(int index, Collection<? extendsE> c) 從指定的位置開始,將指定 Collection 中的所有元素插入到此列表中。
void clear()移除此列表中的所有元素。
int indexOf(Object elem)搜索給定參數(shù)第一次出現(xiàn)的位置,使用 equals 方法進行相等性測試。
boolean isEmpty()測試此列表中是否沒有元素。
int lastIndexOf(Object elem)返回指定的對象在列表中最后一次出現(xiàn)的位置索引。
E remove(int index)移除此列表中指定位置上的元素。
int size()返回此列表中的元素數(shù)。
Object[] toArray() 返回一個按照正確的順序包含此列表中所有元素的數(shù)組。
例:ArrayList類
import java.util.*;
class ArrayListDemo{
publicstatic void main(String[] argas){
ArrayList<String> al=newArrayList<String>();//JDK1.5后在集合類中建議指定集合存放的類型。
al.add('zhangsan');
al.add('lisi');
al.add('wangwu');
System.out.println(al);
}
}
HashSet類實現(xiàn) Set 接口,由哈希表支持。它不保證集合的迭代順序;特別是它不保證該順序恒久不變。HashSet類允許使用 null 元素。實現(xiàn)是不同步的。
Set集合中元素是無序的,不允許有重復(fù)的元素。
例8-8:
import java.util.*;
public class HashSetDemo {
publicstatic void main(String[] args) {
HashSet<Student> hs=newHashSet<Student>();
hs.add( newStudent(1001,'liping'));
hs.add(newStudent(1002,'lisi'));
hs.add(newStudent(1003,'wanglili'));
Iterator it=hs.iterator();
while(it.hasNext()){
Studentstu=(Student)it.next();
stu.showInfo();
}
}
}
class Student{
private final int 學(xué)號;
privateString 姓名;
publicStudent(int no,String s){
學(xué)號=no;
姓名=s;
}
publicvoid setName(String s){
姓名=s;
}
publicString getName(){
return 姓名;
}
publicint getId(){
return 學(xué)號;
}
publicvoid showInfo(){
System.out.println('學(xué)號:' 學(xué)號 '\n姓名:' 姓名);
}
}
Iterator是對集合進行迭代的迭代器。迭代器代替了 Java Collections Framework 中的 Enumeration。迭代器允許在迭代期間從迭代器所指向的集合中移除元素。
常用方法如下:
boolean hasNext()
如果仍有元素可以迭代,則返回 true。
E next()
返回迭代的下一個元素。
void remove()
從迭代器指向的集合中移除迭代器返回的最后一個元素(可選操作)。
聯(lián)系客服