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

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

Jan 11, 2021 am 09:43 AM
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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Javaの完全数 Javaの完全数 Aug 30, 2024 pm 04:28 PM

Java における完全数のガイド。ここでは、定義、Java で完全数を確認する方法、コード実装の例について説明します。

Java の乱数ジェネレーター Java の乱数ジェネレーター Aug 30, 2024 pm 04:27 PM

Java の乱数ジェネレーターのガイド。ここでは、Java の関数について例を挙げて説明し、2 つの異なるジェネレーターについて例を挙げて説明します。

ジャワのウェカ ジャワのウェカ Aug 30, 2024 pm 04:28 PM

Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

Javaのスミス番号 Javaのスミス番号 Aug 30, 2024 pm 04:28 PM

Java のスミス番号のガイド。ここでは定義、Java でスミス番号を確認する方法について説明します。コード実装の例。

Java Springのインタビューの質問 Java Springのインタビューの質問 Aug 30, 2024 pm 04:29 PM

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8 Stream Foreachから休憩または戻ってきますか? Java 8 Stream Foreachから休憩または戻ってきますか? Feb 07, 2025 pm 12:09 PM

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

Java での日付までのタイムスタンプ Java での日付までのタイムスタンプ Aug 30, 2024 pm 04:28 PM

Java での日付までのタイムスタンプに関するガイド。ここでは、Java でタイムスタンプを日付に変換する方法とその概要について、例とともに説明します。

カプセルの量を見つけるためのJavaプログラム カプセルの量を見つけるためのJavaプログラム Feb 07, 2025 am 11:37 AM

カプセルは3次元の幾何学的図形で、両端にシリンダーと半球で構成されています。カプセルの体積は、シリンダーの体積と両端に半球の体積を追加することで計算できます。このチュートリアルでは、さまざまな方法を使用して、Javaの特定のカプセルの体積を計算する方法について説明します。 カプセルボリュームフォーミュラ カプセルボリュームの式は次のとおりです。 カプセル体積=円筒形の体積2つの半球体積 で、 R:半球の半径。 H:シリンダーの高さ(半球を除く)。 例1 入力 RADIUS = 5ユニット 高さ= 10単位 出力 ボリューム= 1570.8立方ユニット 説明する 式を使用してボリュームを計算します。 ボリューム=π×R2×H(4

See all articles