検索
ホームページJava&#&はじめるJavaによるシーケンステーブルの追加、削除、問い合わせ、変更を実現

Javaによるシーケンステーブルの追加、削除、問い合わせ、変更を実現

シーケンス テーブルとは何ですか?どのような構造になっているのでしょうか?

シーケンステーブルは、連続した物理アドレスを持つストレージユニットのセグメントに順番に格納される線形構造であり、一般的にはアレイストレージが使用されます。アレイ上のデータの追加、削除、確認、変更を完了します。

(学習ビデオ共有: java ビデオ チュートリアル)

シーケンス テーブルは次のように分かれています:

静的シーケンス テーブル: 固定長配列ストレージを使用します。
動的シーケンス テーブル: 動的にオープンされた配列ストレージを使用する

静的シーケンス テーブルは、保存する必要があるデータ量がわかっているシナリオに適しています。

静的シーケンステーブルの固定長配列ではNが固定的に大きくなり、空きすぎると無駄になりますし、空きすぎると足りなくなります。

シーケンシャル テーブルの実装

まず、シーケンス テーブルの長さを指定する必要があります。リストに要素を挿入したい場合は、まず最初の数値を位置 0 に挿入する必要があります。位置が 0 の場合、カウントしないと、位置 1 以降に直接挿入することはできません。位置 0、1、および 2 にデータがあり、それを位置 0 または 1 に挿入したい場合は、シーケンス テーブルを逆方向​​に走査して、前のデータを 1 つ前に移動する必要があります。

Javaによるシーケンステーブルの追加、削除、問い合わせ、変更を実現

追加:

public class SepList {
    public int[] val;//定义数据
    public int size;//存放一个数据则让size++;

    //构造方法  顺序表大小
    public SepList(){
        this.val = new int[5];
    }
    //也可以往进传大小
    public SepList(int ret){
        this.val = new int[ret];
    }

    //增加数据 得传要插入的位置与对应位置的数据 就比如0号位置插10
    public void addVal(int pos,int val){
        //首先判断顺序表是否满
        if(this.val.length == this.size) return;
        //其次得看看给的位置是否合法  pos不能小于0 也不能比如0号位置有数据 1号位置没有数据  然后插在2号或者更后边的位置
        if(pos < 0 || pos > this.size) return;
        //如果0 1 2 3位置都有数据,要往1号位置插,得让后边的位置往后移一步
        for(int i = this.size; i >= pos; i--){
            this.val[i + 1] = this.val[i];
        }
        //此时在给定位置插数据
        this.val[pos] = val;
        this.size++;
    }

    //打印链表
    public void disPlay(){
        for(int i = 0; i < this.size; i++){
            System.out.print(this.val[i] + " ");
        }
        System.out.println();//打印完后空行
    }

    public static void main(String[] args) {
        SepList myList = new SepList();//默认用5个元素
//        SepList myList = new SepList(10);//这时候顺序表的大小是10
        myList.addVal(0,10);//在0位置插入第一个数据
        myList.disPlay();//打印

    }
}

//执行结果
10

複数のデータを挿入する場合は、メソッドを呼び出すだけです。
例:

        myList.addVal(0,10);//第一次插入
        myList.addVal(1,20);
        myList.addVal(2,30);
        myList.addVal(3,40);
        myList.addVal(4,50);
        myList.disPlay();//打印
 
//执行结果
10 20 30 40 50

この時点での注文 テーブルがいっぱいでさらに挿入したらどうなりますか?

        myList.addVal(0,10);//第一次插入
        myList.addVal(1,20);
        myList.addVal(2,30);
        myList.addVal(3,40);
        myList.addVal(4,50);
        myList.addVal(5,60);
        myList.addVal(6,70);
        myList.disPlay();//打印

//执行结果
10 20 30 40 50

なぜ同じままでエラーが報告されないのですか?これは、add 関数に入った時点で順序表がいっぱいであると判断し、いっぱいの場合は直接 print 関数にジャンプするためです。エラーは報告されません。この時点で、インクリメント関数が記述されます。

Check

Javaによるシーケンステーブルの追加、削除、問い合わせ、変更を実現

  //判定链表是否包含某个元素
  public boolean contains(int toFind){
      for(int i = 0; i < this.size; i++){
          if(toFind == this.val[i]){
              return true;
          }
      }
      return false;
  }

  //查找某个元素对应的位置
  public int search(int toFind){
      for(int i = 0; i < this.size; i++){
          if(toFind == this.val[i]){
              return i;
          }
      }
      return -1;
  }

  //获取pos位置的数据
  public int getPos(int pos){
      //首先判断pos是否合法
      if(pos < 0 || pos > this.size) return -1;
      for(int i = 0; i < this.size; i++){
          if(this.val[i] == this.val[pos]){
              return this.val[pos];
          }
      }
      return -1;
  }

//调用方法 在这没有粘贴主函数 你们一定要加上
      boolean flag1 = myList.contains(10);//判定元素
      boolean flag2 = myList.contains(60);
      System.out.println(flag1);
      System.out.println(flag2);
      int ret = myList.search(10);//查找
      int ret1 = myList.search(50);
      System.out.println(ret);
      System.out.println(ret1);
      int ret2 = myList.getPos(0);//获取pos位置数据
      int ret3 = myList.getPos(4);
      System.out.println(ret2);
      System.out.println(ret3);

//执行结果
true
false
0
4
10
50

Change

pos 位置に対応するデータを直接検索し、新しいデータを割り当てます大丈夫です

Javaによるシーケンステーブルの追加、削除、問い合わせ、変更を実現

 //修改pos位置的值
    public void remove(int pos,int val){
        if(pos < 0 || pos > this.size){
            return;
        } else {
            this.val[pos] = val;
        }
    }

        myList.remove(2,3);//2号位置改为3
        myList.remove(3,4);//3号位置改为4
        myList.disPlay();//打印

//执行结果
10 20 3 4 50

削除

指定されたデータを削除した後、後続のデータを上書きするだけです

Javaによるシーケンステーブルの追加、削除、問い合わせ、変更を実現

 //删除元素
    public void delVal(int key){
        int i,j = 0;
        //找到该位置
        for(i = 0; i < this.size; i++){
            if(this.val[i] == key){
                j = i;
                break;
            }
        }
        //删除该位置数据,后边数据往前覆盖
        for(i = j; i < this.size - 1; i++){
            this.val[i] = this.val[i + 1];
        }
        this.size--;
    }

        myList.delVal(10);
        myList.delVal(50);
        myList.disPlay();//打印

//执行结果
20 30 40

関連する推奨事項: Java 入門チュートリアル

以上がJavaによるシーケンステーブルの追加、削除、問い合わせ、変更を実現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はcsdnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール