Java數(shù)據(jù)結(jié)構(gòu)

Java工具包中包含許多強(qiáng)大的數(shù)據(jù)結(jié)構(gòu),主要包括

枚舉(Enumeration);

位集合(BitSet);

向量(Vector);

棧(Stack);

字典(Dictionary);

哈希表(Hashtable);

屬性(Properties);

下面是詳細(xì)的敘述和實(shí)例:

1、枚舉(Enumeration);

? ? 枚舉的定義是從其它數(shù)據(jù)結(jié)構(gòu)中取出連續(xù)元素,而它本身并不是一種數(shù)據(jù)結(jié)構(gòu),現(xiàn)在已經(jīng)基本上被迭代器所取代,但在某些方面仍有使用,如應(yīng)用在Vector和Properties等少數(shù)傳統(tǒng)類中,另外還有一些API類,以及應(yīng)用程序中,下面以枚舉在Vector中的應(yīng)用為例:

import java.util.Enumeration;

import java.util.Vector;

//從Vector中取出連續(xù)元素

public class EnumerationTest {

public EnumerationTest(){

Enumeration days;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //申明枚舉對象days

Vector daysNames =new Vector<>();? ? ? ? ? ? ? //申明一個(gè)Vector,存放元素? ? ? ? ? ? ? ?

daysNames.add("Java");? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //向Vector中存放元素

daysNames.add("數(shù)");

daysNames.add("據(jù)");

daysNames.add("結(jié)");

daysNames.add("構(gòu)");

days = daysNames.elements();

while (days.hasMoreElements()){? ? ? ? ? ? ? ? ? ? //hasMoreElements()方法用于測試此枚舉是否包含更多元素

System.out.println(days.nextElement());? ? ? ? //nextElement()方法測試此枚舉是否存在下一個(gè)元素,若存在返回此枚舉的下一個(gè)元素,否則結(jié)束

}

}

}

測試成功輸出控制臺顯示如下信息:

2、位集合(BitSet);

? ? 位集合類實(shí)現(xiàn)了一組可以單獨(dú)設(shè)置和清除的位或標(biāo)志。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 該類在處理一組布爾值時(shí)比較高效,只需要給每個(gè)值賦值一"位",然后對位進(jìn)行適當(dāng)?shù)脑O(shè)置或清除,就可以對布爾值進(jìn)行操作了。位集合實(shí)際上類似于數(shù)學(xué)中的集合,然后對集合進(jìn)行操作,相關(guān)操作有:? ? ? ? ? ? ? ? ? void set(int index) 設(shè)置index所在的布爾值為true;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? void clear(int index)設(shè)置index所在的布爾值為false;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? void and(BitSet set)執(zhí)行邏輯與操作? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? void or(BitSet bitSet)執(zhí)行邏輯或操作。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? void xor(BitSet bitSet)執(zhí)行邏輯異或操作。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 下面是Java代碼實(shí)例

import java.util.BitSet;

//Java數(shù)據(jù)結(jié)構(gòu)-位運(yùn)算

public class BitSetTest {

public BitSetTest(){

BitSet bit1 =new BitSet(10);

BitSet bit2 =new BitSet(10);

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

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

if(i%3==0) bit2.set(i);

}

System.out.println("bit1中的元素有"+bit1);

System.out.println("bit2中的元素有"+bit2);

bit1.and(bit2);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //邏輯與運(yùn)算

System.out.println("bit1和bit2進(jìn)行與運(yùn)算的結(jié)果為"+bit1);

System.out.println("--------------------------------------------------");

System.out.println("bit1中的元素有"+bit1);

System.out.println("bit2中的元素有"+bit2);

bit1.or(bit2);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //邏輯或運(yùn)算

System.out.println("bit1和bit2進(jìn)行或運(yùn)算的結(jié)果為"+bit2);

System.out.println("--------------------------------------------------");

System.out.println("bit1中的元素有"+bit1);

System.out.println("bit2中的元素有"+bit2);

bit1.xor(bit2);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //邏輯異或運(yùn)算

System.out.println("bit1和bit2進(jìn)行異或運(yùn)算的結(jié)果為"+bit1);

}

}

測試成功輸出控制臺顯示如下信息:

3、向量(Vector);

? ? Vector 類實(shí)現(xiàn)了一個(gè)動(dòng)態(tài)數(shù)組。和 ArrayList 很相似,但是兩者不同,Vector 包含了許多不屬于集合框架的傳統(tǒng)方法,Vector 主要用于不確定數(shù)組的大小,或者說是一個(gè)可以改變大小的數(shù)組的情況。相關(guān)操作有

? ? void addElement(Object obj) 將指定的組件添加到此向量的末尾,將其大小增加 1。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? int capacity() 返回此向量的當(dāng)前容量。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? int size() 返回此向量中的組件數(shù)。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Object firstElement() 返回此向量的第一個(gè)組件(位于索引 0)處的項(xiàng))。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Object lastElement() 返回此向量的最后一個(gè)組件。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? boolean contains(Collection c) 如果此向量包含指定 Collection 中的所有元素,則返回 true。? ? ? ? ? ? ? ? ? ? ? ? 下面是Java代碼實(shí)例

import java.util.Enumeration;

import java.util.Vector;

//Java數(shù)據(jù)結(jié)構(gòu)-向量(Vector)

public class VectorTest {

public VectorTest(){

Vector v =new Vector(2,2);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //申明Vector對象,設(shè)置初始容量為2,增量為2

Enumeration num;//申明枚舉對象num

System.out.println("向量中組件數(shù)量為:"+v.size());? ? ? //返回向量中組件數(shù)量

System.out.println("向量初始容量為:"+v.capacity());? //返回向量容量

System.out.println("-------------------------------------------");

v.addElement(new Integer(1));? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //往向量中增加組件

v.addElement(new Integer(2));

v.addElement(new Double(1.52));? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //添加組件超過初始容量,自動(dòng)增加2

//v.addElement(new String("java"));

System.out.println("增加向量組件后向量的組件數(shù)量為:"+v.size());? ? ? ? //返回增加組件后的向量的組件數(shù)量

System.out.println("增加向量組件后向量的容量為:"+v.capacity());? ? ? ? //返回增加組件后的向量的容量大小

System.out.println("-------------------------------------------");

System.out.println("向量中的第一個(gè)組件為:"+v.firstElement());? ? ? ? ? //返回向量的第一個(gè)組件

System.out.println("向量中的最后一個(gè)組件為:"+v.lastElement());? ? ? ? //返回向量的最后一個(gè)組件

System.out.println("-------------------------------------------");

if(v.contains(new Integer(1)))? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //測試向量中是否含有組件1

System.out.println("向量中包含組件1");

num = v.elements();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //通過枚舉對象取出向量中的組件

while(num.hasMoreElements())

System.out.print(num.nextElement()+"? ? ? ");

}

}

測試成功輸出控制臺顯示如下信息:

4、棧(Stack);

? ? 棧(Stack)實(shí)現(xiàn)了一個(gè)后進(jìn)先出(LIFO)的數(shù)據(jù)結(jié)構(gòu)??梢岳斫鉃榇怪贝鎯?,先進(jìn)的放置在底部,后進(jìn)的放置在上面,取出是自頂向下取出。相關(guān)操作有:

? ? Object push(Object element)把項(xiàng)壓入堆棧頂部。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Object pop( )移除堆棧頂部的對象,并作為此函數(shù)的值返回該對象。

? ? 下面是Java代碼實(shí)例

import java.util.Stack;

//Java數(shù)據(jù)結(jié)構(gòu)-棧(Stack)

public class StackTest {

public StackTest(){

Stack st =new Stack<>();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //申明棧對象st

? ? ? ? for(int i=0;i<3;i++){

st.push(new Integer(i));? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //元素入棧

? ? ? ? ? ? System.out.println("(" + i +")入棧");

}

System.out.println("當(dāng)前棧的元素有: " + st);

System.out.println("取出棧頂元素:"+st.pop() );? ? ? ? ? ? ? //取出棧頂元素

? ? ? ? System.out.println("當(dāng)前棧的元素有: " + st);? ? ? ? ? //查看取出棧頂元素后的棧元素

? ? }

}

測試成功輸出控制臺顯示如下信息:

5、字典(Dictionary);

? ? 字典(Dictionary) 類是一個(gè)抽象類,它定義了鍵映射到值的數(shù)據(jù)結(jié)構(gòu)。字典是通過特定的鍵而不是整數(shù)索引來訪問數(shù)據(jù)。在現(xiàn)代Dictionary類已經(jīng)過時(shí),在實(shí)際開發(fā)中,通過實(shí)現(xiàn)Map接口來獲取鍵/值的存儲功能。

6、哈希表(Hashtable);

? ? Hashtable類提供了一種在用戶定義鍵結(jié)構(gòu)的基礎(chǔ)上來組織數(shù)據(jù)的手段。哈希表鍵的具體含義完全取決于哈希表的使用情景和它包含的數(shù)據(jù)。一個(gè)哈希表,要指定用作鍵的對象,以及要鏈接到該鍵的值,該鍵經(jīng)過哈希處理,所得到的散列碼被用作存儲在該表中值的索引。相關(guān)操作有:

? ? Object put(Object key, Object value)將指定 key 映射到此哈希表中的指定 value。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Enumeration keys( )返回此哈希表中的鍵的枚舉。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Object get(Object key)返回指定鍵所映射到的值,如果此映射不包含此鍵的映射,則返回 null. 更確切? ? ? ? ? 地講,如果此映射包含滿足 (key.equals(k)) 的從鍵 k 到值 v 的映射,則此方法返回 v;否則,返回 null。

? ? 下面是Java代碼實(shí)例

import java.util.Enumeration;

import java.util.Hashtable;

//Java數(shù)據(jù)結(jié)構(gòu)-哈希表(HashTable)

public class HashTableTest {

public HashTableTest() {

Hashtable hash =new Hashtable();? ? ? ? ? ? //申明HashTable對象hashEnumeration num;//申明枚舉對象num

String str;

Double doub;

hash.put("book",new Double(1.11));? ? ? ? ? ? //在哈希表中添加鍵值對

hash.put("paper",new Double(2.22));

num = hash.keys();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //通過枚舉取出哈希表中的鍵

while(num.hasMoreElements()){

str = (String)num.nextElement();

System.out.println("商品名稱:"+str+"? ? 價(jià)格:"+hash.get(str));

}

doub = ((Double)hash.get("book")).doubleValue();

hash.put("book",new Double(doub+100));? ? ? //修改哈希表中相關(guān)鍵的值

? ? ? ? System.out.println("book的新價(jià)格為:"+hash.get("book"));

}

}

測試成功輸出控制臺顯示如下信息:

7、屬性(Properties);

? ? Properties 繼承于 Hashtable.Properties 類表示了一個(gè)持久的屬性集,所以具有HashTable的相關(guān)方法,屬性列表中每個(gè)鍵及其對應(yīng)值都是一個(gè)字符串??捎糜讷@取環(huán)境變量時(shí)它就作為System.getProperties()方法的返回值。相關(guān)操作有:

? ? String getProperty(String key)用指定的鍵? ? ? 在此屬性列表中搜索屬性。? ? ? ? ? ? ? ? ? ? ? ? ? String getProperty(String key, String defaultProperty)用指定的鍵在屬性列表中搜索屬性。

? ? 下面是Java代碼實(shí)例

import java.util.Iterator;

import java.util.Properties;

import java.util.Set;

public class PropertiesTest {

public PropertiesTest(){

Properties pro =new Properties();? ? ? ? ? ? ? ? ? ? //申明Properties對象 pro

Set state;

String str;

pro.put("admin","111");? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //設(shè)置鍵值對

pro.put("normal","222");

state = pro.keySet();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //將鍵值對添加到HashTable

Iterator itr = state.iterator();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //申明迭代器對象itr,取出鍵值對

while (itr.hasNext()){? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //判斷是否存在下一組鍵值對

str = (String) itr.next();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //返回下一組鍵值對

System.out.println("賬號為:"+

str +"? ? 密碼為:" + pro.getProperty(str) +".");

}

str = pro.getProperty("leader","不存在");? ? ? ? ? ? //不存在的鍵,其值設(shè)置為“不存在”

System.out.println("賬戶為leader" + str);

}

}

測試成功輸出控制臺顯示如下信息:


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 慕課視頻(java入門資料):https://www.imooc.com/learn/110、菜鳥教程 一. ja...
    亮濤閱讀 1,658評論 0 0
  • Java工具包提供了強(qiáng)大的數(shù)據(jù)結(jié)構(gòu)。在Java中的數(shù)據(jù)結(jié)構(gòu)主要包括以下幾種接口和類: 枚舉(Enumeration...
    863cda997e42閱讀 222評論 0 1
  • ava工具包提供了強(qiáng)大的數(shù)據(jù)結(jié)構(gòu)。在Java中的數(shù)據(jù)結(jié)構(gòu)主要包括以下幾種接口和類: 枚舉(Enumeration)...
    java大濕兄閱讀 510評論 0 1
  • Java工具包提供了強(qiáng)大的數(shù)據(jù)結(jié)構(gòu)。在Java中的數(shù)據(jù)結(jié)構(gòu)主要包括以下幾種接口和類: 以上這些類是傳統(tǒng)遺留的,在J...
    TESTME閱讀 537評論 0 0
  • 遲日江山麗, 春風(fēng)花草香。 泥融飛燕子, 沙暖睡鴛鴦。 ——杜甫《絕句二首》 泡桐 泡桐,玄參目玄參科屬植物。是泡...
    園崎茉莉也閱讀 1,883評論 0 1

友情鏈接更多精彩內(nèi)容