コードコピーは次のとおりです。
java.util.arraysをインポートします。
/**
*スタック実装<br>
* @authorスキップ
* @version 1.0
*/
パブリッククラススタック<t> {
プライベートINTサイズ; //スタック内の要素の数
プライベートオブジェクト[] arr; //基礎となる配列
プライベートfinal int defaultlength = 200; //デフォルト長
/**
*パラメーターコンストラクトなし、デフォルトの長さのArrayを初期化します
*/
public stack(){
arr = new Object [defaultLength];
サイズ= 0;
}
/**
*長さパラメーターを使用して配列を初期化します
* @paramの長さ
*/
パブリックスタック(int length){
arr = new Object [length];
サイズ= 0;
}
/**
*スタックを入力します
* @param要素データ
*/
public void push(t element){
//容量を拡大する必要がありますか?
if(size> = arr.length){
//配列拡張
extendcapacity(size+1);
}
arr [size ++] = element;
}
/**
*スタックから
* @returnデータ
*/
@suppresswarnings( "unchecked")
public t pop(){
//要素の数は0で、スタッキング操作を実行できません
if(size == 0){
nullを返します。
}
t t =(t)arr [size-1];
arr [ - size] = null; //データはリリースされ、nullに復元されました
tを返します。
}
/**
*スタックをクリアします
*/
public void clear(){
for(int i = 0; i <size; i ++){
arr [i] = null;
}
サイズ= 0;
}
/**
*現在のスタック内の要素の数を取得します
* @return要素の数
*/
public int getsize(){
返品サイズ。
}
/**
*空のスタックかどうかを判断します
* @return emptyは本当です、非空白は偽です
*/
public boolean isempty(){
return size == 0;
}
/**
*印刷スタック内のすべての要素
*/
@suppresswarnings( "unchecked")
public void printstack(){
for(int i = 0; i <size; i ++){
System.out.print(((t)arr [i])。toString());
}
System.out.println();
}
/**
*容量を拡張します
* @paramの長さ必要な長さ
*/
private void extendcapacity(int length){
//現在の配列の長さと必要な長さは最大でなければなりません
int mincapacity = math.max(arr.length、length);
//容量拡張が必要かどうかを判断します
if(mincapacity -arr.length> 0){
//配列の長さは半分増加します
int newlength = arr.length + arr.length/2;
//新しい長さが要件よりも小さい場合は、必要な長さを配列の長さとして使用します
if(newlength <mincapacity){
newLength = mincapacity;
}
//配列の長さはinteger.max_valueを超えることはできません
if(newlength> integer.max_value -8){
newlength = integer.max_value;
}
//配列拡張
arr = arrays.copyof(arr、newlength);
}
}
}