java enumeration接口_20180824-Java Enumeration 接口
Java Enumeration接口
Enumeration接口中定義了一些方法,通過這些方法可以枚舉(一次獲得一個)對象集合中的元素。
這種傳統接口已被迭代器取代,雖然Enumeration 還未被遺棄,但在現代代碼中已經被很少使用了。
盡管如此,它還是使用在諸如Vector和Properties這些傳統類所定義的方法中,除此之外,還用在一些API類,并且在應用程序中也廣泛被使用。
下表總結了一些Enumeration聲明的方法:
方法描述
boolean hasMoreElements( ) 測試此枚舉是否包含更多的元素。
Object nextElement( ) 如果此枚舉對象至少還有一個可提供的元素,則返回此枚舉的下一個元素。
實例
以下實例演示了Enumeration的使用:
import java.util.Vector;
import java.util.Enumeration;
public class EnumerationTester{
public static void main(String args[]){
Enumeration days;
Vector dayNames = new Vector();
dayNames.add("Sunday");
dayNames.add("Monday");
dayNames.add("Tuesday");
dayNames.add("Wednesday");
dayNames.add("Thursday");
dayNames.add("Friday");
dayNames.add("Saturday");
days = dayNames.elements();
while(days.hasMoreElements()){
System.out.println(days.nextElements);
}
}
}
以上實例編譯運行結果如下:
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
--------------------------------------------------------------------------------------------------------------------
Java Bitset類
個Bitset類創建一種特殊類型的數組來保存位值。BitSet中數組大小會隨需要增加。這和位向量(vector of bits)比較類似。
這是一個傳統的類,但它在Java 2中被完全重新設計。
BitSet定義了兩個構造方法。
第一個構造方法創建一個默認的對象:
BitSet()
第二個方法允許用戶指定初始大小。所有位初始化為0。
BitSet(int size)
BitSet中實現了Cloneable接口中定義的方法如下表所列:
方法描述
void and(BitSet bitSet)
對此目標位 set 和參數位 set 執行邏輯與操作。
void andNot(BitSet bitSet)
清除此 BitSet 中所有的位,其相應的位在指定的 BitSet 中已設置。
int cardinality( )
返回此 BitSet 中設置為 true 的位數。
void clear( )
將此 BitSet 中的所有位設置為 false。
void clear(int index)
將索引指定處的位設置為 false。
void clear(int startIndex, int endIndex)
將指定的 fromIndex(包括)到指定的 toIndex(不包括)范圍內的位設置為 false。
Object clone( )
復制此 BitSet,生成一個與之相等的新 BitSet。
boolean equals(Object bitSet)
將此對象與指定的對象進行比較。
void flip(int index)
將指定索引處的位設置為其當前值的補碼。
void flip(int startIndex, int endIndex)
將指定的 fromIndex(包括)到指定的 toIndex(不包括)范圍內的每個位設置為其當前值的補碼。
boolean get(int index)
返回指定索引處的位值。
BitSet get(int startIndex, int endIndex)
返回一個新的 BitSet,它由此 BitSet 中從 fromIndex(包括)到 toIndex(不包括)范圍內的位組成。
int hashCode( )
返回此位 set 的哈希碼值。
boolean intersects(BitSet bitSet)
如果指定的 BitSet 中有設置為 true 的位,并且在此 BitSet 中也將其設置為 true,則返回 ture。
boolean isEmpty( )
如果此 BitSet 中沒有包含任何設置為 true 的位,則返回 ture。
int length( )
返回此 BitSet 的"邏輯大小":BitSet 中最高設置位的索引加 1。
int nextClearBit(int startIndex)
返回第一個設置為 false 的位的索引,這發生在指定的起始索引或之后的索引上。
int nextSetBit(int startIndex)
返回第一個設置為 true 的位的索引,這發生在指定的起始索引或之后的索引上。
void or(BitSet bitSet)
對此位 set 和位 set 參數執行邏輯或操作。
void set(int index)
將指定索引處的位設置為 true。
void set(int index, boolean v)
將指定索引處的位設置為指定的值。
void set(int startIndex, int endIndex)
將指定的 fromIndex(包括)到指定的 toIndex(不包括)范圍內的位設置為 true。
void set(int startIndex, int endIndex, boolean v)
將指定的 fromIndex(包括)到指定的 toIndex(不包括)范圍內的位設置為指定的值。
int size( )
返回此 BitSet 表示位值時實際使用空間的位數。
String toString( )
返回此位 set 的字符串表示形式。
void xor(BitSet bitSet)
對此位 set 和位 set 參數執行邏輯異或操作。
實例
下面的程序說明這個數據結構支持的幾個方法:
import java.util.BitSet;
public class BitSetDemo{
public static void main(String[] args){
BitSet bits1 = new BitSet(16);
BitSet bits2 = new BitSet(16);
//set some bit
for (int i =0;i<16;i++){
if((i%2) ==0) bits1.set(i);
if((i%5) !=0) bits2.set(i);
}
System.out.println("Initial pattern in bits1: ");
System.out.println(bits1);
System.out.println("\nInitial pattern in bits2: ");
System.out.println(bits2);
// AND bits
bits2.and(bits1);
System.out.println("\nbits2 AND bits1: ");
System.out.println(bits2);
// OR bits
bits2.or(bits1);
System.out.println("\nbits2 OR bits1: ");
System.out.println(bits2);
// XOR bits
bits2.xor(bits1);
System.out.println("\nbits2 XOR bits1: ");
System.out.println(bits2);
}
}
以上實例編譯運行結果如下:
Initial pattern in bits1:
{0, 2, 4, 6, 8, 10, 12, 14}
Initial pattern in bits2:
{1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14}
bits2 AND bits1:
{2, 4, 6, 8, 12, 14}
bits2 OR bits1:
{0, 2, 4, 6, 8, 10, 12, 14}
bits2 XOR bits1:
{}
----------------------------------------------------------------------------------------------------------------------------
Java Vector 類
Vector類實現了一個動態數組。和ArrayList和相似,但是兩者是不同的:
Vector是同步訪問的。
Vector包含了許多傳統的方法,這些方法不屬于集合框架。
Vector主要用在事先不知道數組的大小,或者只是需要一個可以改變大小的數組的情況。
Vector類支持4種構造方法。
第一種構造方法創建一個默認的向量,默認大小為10:
Vector()
第二種構造方法創建指定大小的向量。
Vector(int size)
第三種構造方法創建指定大小的向量,并且增量用incr指定. 增量表示向量每次增加的元素數目。
Vector(int size,int incr)
第四種構造方法創建一個包含集合c元素的向量:
Vector(Collection c)
除了從父類繼承的方法外Vector還定義了部分方法: 略
-------------------------------------------------------------------------------------------------------------------------
Java Stack 類
棧是Vector的一個子類,它實現了一個標準的后進先出的棧。
堆棧只定義了默認構造函數,用來創建一個空棧。 堆棧除了包括由Vector定義的所有方法,也定義了自己的一些方法。
Stack()
除了由Vector定義的所有方法,自己也定義了一些方法:
boolean empty()
測試堆棧是否為空。
Object peek( )
查看堆棧頂部的對象,但不從堆棧中移除它。
Object pop( )
移除堆棧頂部的對象,并作為此函數的值返回該對象。
Object push(Object element)
把項壓入堆棧頂部。
int search(Object element)
返回對象在堆棧中的位置,以 1 為基數。
-------------------------------------------------------------------------------------------------------------------
Java Dictionary 類
Dictionary 類是一個抽象類,用來存儲鍵/值對,作用和Map類相似。
給出鍵和值,你就可以將值存儲在Dictionary對象中。一旦該值被存儲,就可以通過它的鍵來獲取它。所以和Map一樣, Dictionary 也可以作為一個鍵/值對列表。
Dictionary類已經過時了。在實際開發中,你可以實現Map接口來獲取鍵/值的存儲功能。
--------------------------------------------------------------------------------------------------------------------------
Java Map 接口
Map接口中鍵和值一一映射. 可以通過鍵來獲取值。
給定一個鍵和一個值,你可以將該值存儲在一個Map對象. 之后,你可以通過鍵來訪問對應的值。
當訪問的值不存在的時候,方法就會拋出一個NoSuchElementException異常.
當對象的類型和Map里元素類型不兼容的時候,就會拋出一個 ClassCastException異常。
當在不允許使用Null對象的Map中使用Null對象,會拋出一個NullPointerException 異常。
當嘗試修改一個只讀的Map時,會拋出一個UnsupportedOperationException異常。
下面的例子來解釋Map的功能
import java.util.*;
public class CollectionsDemo{
public static void main(String[] args){
Map m1 = new HashMap();
m1.put("Zara", "8");
m1.put("Mahnaz", "31");
m1.put("Ayan", "12");
m1.put("Daisy", "14");
System.out.println();
System.out.println(" Map Elements");
System.out.print("\t" + m1);
}
}
以上實例編譯運行結果如下:
Map Elements
{Mahnaz=31, Ayan=12, Daisy=14, Zara=8}
------------------------------------------------------------------------------------------------------------------------
Java Hashtable 接口
Hashtable是原始的java.util的一部分, 是一個Dictionary具體的實現 。
然而,Java 2 重構的Hashtable實現了Map接口,因此,Hashtable現在集成到了集合框架中。它和HashMap類很相似,但是它支持同步。
像HashMap一樣,Hashtable在哈希表中存儲鍵/值對。當使用一個哈希表,要指定用作鍵的對象,以及要鏈接到該鍵的值。
然后,該鍵經過哈希處理,所得到的散列碼被用作存儲在該表中值的索引。
Hashtable定義了四個構造方法。第一個是默認構造方法:
Hashtable()
第二個構造函數創建指定大小的哈希表:
Hashtable(int size)
第三個構造方法創建了一個指定大小的哈希表,并且通過fillRatio指定填充比例。
填充比例必須介于0.0和1.0之間,它決定了哈希表在重新調整大小之前的充滿程度:
Hashtable(int size,float fillRatio)
第四個構造方法創建了一個以M中元素為初始化元素的哈希表。
哈希表的容量被設置為M的兩倍。
Hashtable(Map m)
Hashtable中除了從Map接口中定義的方法外,還定義了以下方法:
-------------------------------------------------------------------------------------------------------------------------
Java Properties 接口
Properties 繼承于 Hashtable.表示一個持久的屬性集.屬性列表中每個鍵及其對應值都是一個字符串。
Properties 類被許多Java類使用。例如,在獲取環境變量時它就作為System.getProperties()方法的返回值。
Properties 定義如下實例變量.這個變量持有一個Properties對象相關的默認屬性列表。
Properties defaults;
Properties類定義了兩個構造方法. 第一個構造方法沒有默認值。
Properties()
第二個構造方法使用propDefault 作為默認值。兩種情況下,屬性列表都為空:
Properties(Properties propDefault)
總結
以上是生活随笔為你收集整理的java enumeration接口_20180824-Java Enumeration 接口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Asp.net高级程序设计之服务器控件(
- 下一篇: 在windows上搭建Apache+Tr