1. はじめに
数列表はよく使われる形式であり、それを学び理解することは非常に重要であり、今後の学習の基礎となります。
2. シーケンスの定義
シーケンスは、コンピューター メモリに配列の形式で保存された線形テーブルを表し、メモリ内の一連の連続ストレージ ユニットを占有します
, in 各要素はこの順序で格納されます。

3. シーケンス テーブルの実装
3.1 シーケンス テーブルの API 設計

3.2シーケンス テーブル コードの実装
ジェネリック クラスを定義します (ジェネリック クラスの利点は、任意の型を受け入れられることです)
1 2 | public class SequenceList<T> {}
|
ログイン後にコピー
ジェネリック クラスのメンバー変数を定義します
1 2 3 4 | private T[] eles;
private int N;
|
ログイン後にコピー
コンストラクターを定義します。メンバー変数の初期化に使用されるメソッドです。
1 2 3 4 5 6 7 | public SequenceList(int capacity) {
this.eles = (T[]) new Object[capacity];
this.N = 0;
}
|
ログイン後にコピー
次の関数が実装されています。
線形テーブルを空のテーブルに設定します
1 2 3 4 5 6 7 | public void clear(){
this.N=0;
}
|
ログイン後にコピー
線形テーブルが空のテーブルであるかどうかを判断します。空のテーブル
1 2 3 4 5 | public boolean isEmpty(){
return this.N==0;
}
|
ログイン後にコピー
線形テーブルの長さを取得します
1 2 3 4 5 | public int length(){
return this.N;
}
|
ログイン後にコピー
位置iの要素を取得します
1 2 3 4 5 | public T get(int i){
return eles[i];
}
|
ログイン後にコピー
要素 t を線形テーブルに追加します
1 2 3 4 5 6 | public void insert(T t){
eles[N++]=t;
}
|
ログイン後にコピー
インデックス i に要素 t# を挿入 ##
1 2 3 4 5 6 7 8 9 10 11 | public void insert(int i,T t){
for (int index=N;index>i;index--){
eles[index]=eles[index-1];
}
eles[i]=t;
N++;
}
|
ログイン後にコピー
挿入図:

指定された位置 i にある要素を削除し、要素
1 2 3 4 5 6 7 8 9 10 11 12 13 | public T remove(int i){
T current=eles[i];
for (int index=0;index<N-1;index++){
eles[index]=eles[index+1];
}
N--;
return current;
}
|
ログイン後にコピー
## を返します。 #要素 t の最初の出現を返す
1 2 3 4 5 6 7 8 9 10 | public int indexOf(T t){
for (int i=0;i<N;i++){
if (eles[i].equals(t)){
return i;
}
}
return -1;
}
|
ログイン後にコピー
3.3 完全な API 概要:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | public class SequenceList<t> {
private T[] eles;
private int N;
public SequenceList(int capacity) {
this.eles = (T[]) new Object[capacity];
this.N = 0;
}
public void clear(){
this.N=0;
}
public boolean isEmpty(){
return this.N==0;
}
public int length(){
return this.N;
}
public T get(int i){
return eles[i];
}
public void insert(T t){
eles[N++]=t;
}
public void insert(int i,T t){
for (int index=N;index>i;index--){
eles[index]=eles[index-1];
}
N++;eles[i]=t;
}
public T remove(int i){
T current=eles[i];
for (int index=0;index<n-1;index++){ 和前面的插入操作类似= "" eles[index]= "eles[index+1];" }= "" 元素个数减1,返回被覆盖的值= "" n--;= "" return = "" current;= "" 查找元素t第一次出现的位置= "" public = "" int= "" indexof(t= "" t){= "" for = "" (int= "" i= "0;i<N;i++){" if (eles[i].equals(t)){= "" i;= "" for 之后还没找到返回-1= "" -1;= "" }<= "" pre= "" ><div class = "contentsignin" >ログイン後にコピー</div></n-1;index++){></t>
|
4. シーケンス テーブルのテスト:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public class SequenceListText {
public static void main(String[] args) {
SequenceList<String> sl= new SequenceList<String>(10);
sl.insert( "孔超" );
sl.insert( "刘诗劲" );
sl.insert(0, "孙嘉辉" );
String s=sl.get(0);
System.out.println(s);
String remove1=sl.remove(0);
System.out.println(remove1);
sl.clear();
System.out.println(sl.length());
}
}
|
ログイン後にコピー
以上がJavaシーケンステーブルの解析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。