我沒看過 其他語言版的數(shù)據(jù)結(jié)構(gòu),但覺得java的實(shí)現(xiàn)方法很巧妙--用類和對象來實(shí)現(xiàn).基于數(shù)組的表,思想很簡單就是定義一個(gè)類用來存儲(chǔ)一組數(shù)據(jù),我定義的是ArrayListClass類,在類中定義用來操作數(shù)組的方法.其實(shí)就是 這么簡單,但具體操作起來就會(huì)碰到很多麻煩了!
我們這個(gè)ArrayListClass類中首先應(yīng)該包括一個(gè)數(shù)組型的域list,用來存放數(shù)據(jù),這樣放在同一數(shù)組中數(shù)據(jù)之間就產(chǎn)生了位置上的聯(lián)系,使對數(shù)據(jù)的操作便的簡單.然而這個(gè)數(shù)組到底是什么數(shù)據(jù)類型的,我們期望這個(gè)表能用于所有的數(shù)據(jù)類型,我們不能將他單純的固定成某一種.所以我們必須將這個(gè)數(shù)據(jù)普通化,解決的辦法就是定義一個(gè)類,作為所有數(shù)據(jù)類型的超類.看這個(gè)DataElement:
public abstract class DataElement {
public abstract boolean equals(DataElement otherElement);
public abstract int compareTo(DataElement otherElement);
public abstract void makeCopy(DataElement otherElement);
public abstract DataElement getCopy();
}
將他定義成為抽象的,再在定義其他數(shù)據(jù)類型時(shí)繼續(xù)并實(shí)現(xiàn)它,我定義了兩個(gè)數(shù)據(jù)類型IntElement和StringElement:
IntElement:
public class IntElement extends DataElement {
PRotected int num;
//constrUCtors
public IntElement(){
num=0;
}
public IntElement(int number){
num=number;
}
public IntElement(IntElement otherElement){
num=otherElement.num;
}
///get-set Methods
public void setNum(int number){
num=number;
}
public int getNum(){
return num;
}
/* (non-Javadoc)
* @see DataElement#equals(DataElement)
*/
public boolean equals(DataElement otherElement) {
// TODO Auto-generated method stub
IntElement newe=(IntElement)otherElement;
return (this.num==newe.num);
}
/* (non-Javadoc)
* @see DataElement#compareTo(DataElement)
*/
public int compareTo(DataElement otherElement) {
// TODO Auto-generated method stub
IntElement newe=(IntElement)otherElement;
if(this.num==newe.num)
return 0;
else if(this.num>newe.num)
return 1;
else
return -1;
}
/* (non-Javadoc)
* @see DataElement#makeCopy(DataElement)
*/
public void makeCopy(DataElement otherElement) {
// TODO Auto-generated method stub
IntElement newe=(IntElement)otherElement;
this.num=newe.num;
}
/* (non-Javadoc)
* @see DataElement#getCopy()
*/
public DataElement getCopy() {
// TODO Auto-generated method stub
IntElement newElement=new IntElement();
newElement.num=this.num;
return newElement;
}
public String toString(){
return String.valueOf(num);
}
}
StringElement:
public class StringElement extends DataElement {
/**
*
*/
private String str;
//constructors
public StringElement() {
str=null;
}
public StringElement(String string){
str=string;
}
public StringElement(StringElement otherElement){
str=otherElement.str;
}
//get-set Methods
public void setStr(String string){
str=string;
}
public String getStr(){
return str;
}
/* (non-Javadoc)
* @see DataElement#equals(DataElement)
*/
public boolean equals(DataElement otherElement) {
// TODO Auto-generated method stub
StringElement newe=(StringElement)otherElement;
return (str==newe.str);
}
/* (non-Javadoc)
* @see DataElement#compareTo(DataElement)
*/
public int compareTo(DataElement otherElement) {
// TODO Auto-generated method stub
StringElement newe=(StringElement)otherElement;
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注