Java中7種的數據結構

編程語言 數據結構 Java 技術 java互助分享 2017-04-07

Java中的數據結構除了上一篇中的集合框架(Collection)外,還主要包括7種接口和類:


1.枚舉接口——Enumeration

說明:不屬於數據結構,主要在數據結構中枚舉集合中的元素。

2.位集合類——BitSet

說明:創建一種特殊類型的數組用來保存位值,數組大小會隨需要增加,在處理一組布爾值的時候非常有用。

3.向量類——Vector

說明:和數組類似,在創建對象的時候不用給對象指定大小,大小能根據需要動態變化。

4.棧——Stack

說明:後進先出的數據結構。

5.字典類——Dictionary

說明:抽象類,提供了鍵映射到值的數據結構。

6.哈希表類——Hashtable

說明:提供了一種在用戶定義鍵結構的基礎上來組織數據的手段,是一個Dictionary具體的實現。

7.屬性——Properties

說明:繼承了Hashtable,屬性中每個鍵及其對應的值都是字符串,持久的屬性集。

一、Enumeration:

方法:

1.boolean hasMoreElements()

是否有下一個元素。

2.Object nextElement()

如果有下一個元素,返回下一個元素。

例子:

Enumeration enum;

Vector ver = new Vector();

ver.add("a");

ver.add("b");

ver.add("c");

enum = ver.elements();

while(enum.hasMoreElements()){

System.out.println(enum.nextElement());

}

二、BitSet:

兩個構造方法:

1.BitSet()

2.BitSet(int size)

指定初始大小,所有位初始值為0。

主要方法:

1.and(BitSet set)

和參數set進行邏輯與操作。

2.andNot(BitSet set)

清除BitSet中所有的與參數set相同的位。

3.int cardinality()

返回為true的位數。

4.clear()

將所有的位設為false。

5.clear(int index)

將index處的位設為false。

6.clear(int startIndex, int endIndex)

將startIndex到endIndex範圍內的位設為false(範圍大於等於startIndex,小於endIndex)。

7.clone()

複製。

8.equals(Object bitSet)

比較。

9.flip(int index)

將index處的位設為其當前值的補碼。

10.flip(int startIndex, int endIndex)

將startIndex到endIndex範圍內的每個位設置為其當前值的補碼。

11.get(int index)

返回index處的位值。

12.get(int startIndex, int endIndex)

返回從startIndex到endIndex範圍內的位。

13.hashCode()

哈希值。

14.intersects(BitSet bitSet)

如果參數bitSet中有為true的位,並且BitSet中其也為true,返回ture。

15.isEmpty()

如果沒有任何為true的位,返回ture。

16.int length()

返回最高位的索引加 1。

17.int nextClearBit(int startIndex)

指定起始索引startIndex,返回第一個為false的位的索引。

18.int nextSetBit(int startIndex)

指定起始索引startIndex,返回第一個為true的位的索引。

19.or(BitSet bitSet)

執行邏輯或操作。

20.set(int index)

將指定索引index處的位設為true。

21.set(int index, boolean v)

將指定索引index處的位設為指定的值v。

22.set(int startIndex, int endIndex)

將startIndex到endIndex範圍內的位設為true。

23.set(int startIndex, int endIndex, boolean v)

將將startIndex到endIndex範圍內的位設為指定的值v。

24.size()

返回表示位值時實際使用空間的位數。

25.toString()

返回字符串表示形式。

26.xor(BitSet bitSet)

和參數bitSet執行邏輯異或操作。

例子:

BitSet bits1 = new BitSet(10);

BitSet bits2 = new BitSet(10);

for(int i=0; i<10; i++) {

if((i%2) == 0) bits1.set(i);

if((i%5) != 0) bits2.set(i);

}

System.out.println(bits2.and(bits1));

System.out.println(bits2.or(bits1));

三、Vector:

四個構造方法:

1.Vector()

默認大小為10。

2.Vector(int size)

創建指定大小的向量。

3.Vector(int size,int incr)

創建指定大小的向量,並且用incr指定每次增加的元素數目。

4.Vector(Collection c)

創建一個包含集合c元素的向量

主要方法和list類似,這裡不再說明。

四、Stack :

主要方法:

1.empty()

堆棧是否為空。

2.peek()

查看堆棧頂部的對象。

3.pop()

移除堆棧頂部的對象,並返回該對象。

4.push(Object element)

把項放到堆棧頂。

5.search(Object element)

返回在堆棧中的位置,以 1 為基數。

例子:

Stack st = new Stack();

st.push(new Integer(2));

st.push(new Integer(7));

Integer a = (Integer) st.pop();

Integer b = (Integer) st.pop();

System.out.println(a);

System.out.println(b);

五、Dictionary:

主要方法和Map類似。

六、Hashtable:

四個構造方法:

1.Hashtable()

2.Hashtable(int size)

創建指定大小的哈希表。

3.Hashtable(int size,float fillRatio)

創建指定大小的哈希表,並且通過fillRatio指定填充比例。

填充比例必須介於0.0和1.0之間,它決定了哈希表在重新調整大小之前的充滿程度。

4.Hashtable(Map m)

創建以m中元素為初始化元素的哈希表。

哈希表的容量是m的兩倍。

主要方法:

除了Map中定義的方法外,還有以下方法:

1.clear()

將哈希表清空。

2.Object clone()

複製。

3.contains(Object value)

表中是否存在與指定值關聯的鍵。

4.boolean containsKey(Object key)

指定對象是否為哈希表中的鍵。

5.boolean containsValue(Object value)

如果哈希表將一個或多個鍵映射到此value值,則返回true。

6.Enumeration elements()

返回哈希表中值的枚舉。

7.get(Object key)

如果此映射包含(key.equals(k))的從k到值v的映射,則返回v,否則返回null。

8.boolean isEmpty()

是否沒有鍵映射到值。

9.Enumeration keys()

返回鍵的枚舉。

10.put(Object key, Object value)

將指定key映射到表中指定value。

11.rehash()

增加表的容量並對其重組,以便更有效地容納和訪問元素。

12.remove(Object key)

移除該鍵及其對應的值。

13.int size()

返回鍵的數量。

14.String toString()

返回字符串表示形式,其形式為 ASCII 字符。

七、Properties:

兩個構造方法:

1.Properties()

2.Properties(Properties propDefault)

使用propDefault作為默認值。

兩種情況下,屬性列表都為空。

主要方法:

1.String getProperty(String key)

用指定的鍵在屬性列表中搜索屬性。

2.String getProperty(String key, String defaultProperty)

用指定的鍵在屬性列表defaultProperty中搜索屬性。

3.list(PrintStream streamOut)

將屬性列表輸出到指定的輸出流streamOut。

4.list(PrintWriter streamOut)

將屬性列表輸出到指定的輸出流streamOut。

5.load(InputStream streamIn) throws IOException

從輸入流中讀取屬性列表(鍵和元素對)。

6.Enumeration propertyNames()

從輸入字符流中讀取屬性列表(鍵和元素對)。

7.setProperty(String key, String value)

調用Hashtable的方法put。

8.store(OutputStream streamOut, String description)

將Properties表中的屬性列表(鍵和元素對)寫入輸出流streamOut。

例子:

Properties per = new Properties();

Set set;

String str;

per.put("a", "aaa");

per.put("b", "bbb");

per.put("c", "ccc");

set = per.keySet();

Iterator iter = set.iterator();

while(iter.hasNext()) {

str = (String) iter.next();

System.out.println(str + per.getProperty(str));

}

str = per.getProperty("a");

System.out.println(str);

相關推薦

推薦中...