Heim  >  Artikel  >  Java  >  Wie implementiert man eine sequentielle Tabellendatenstruktur mit Java?

Wie implementiert man eine sequentielle Tabellendatenstruktur mit Java?

WBOY
WBOYnach vorne
2023-04-21 14:31:081758Durchsuche

    Vorwort

    Eine lineare Liste ist eine endliche Folge von n Datenelementen mit denselben Eigenschaften. Lineare Tabellen sind eine in der Praxis weit verbreitete Datenstruktur. Gängige lineare Tabellen sind: sequentielle Listen, verknüpfte Listen, Stapel, Warteschlangen, Zeichenfolgen ... Eine lineare Liste ist logischerweise eine lineare Struktur, dh eine kontinuierliche gerade Linie. Die physische Struktur ist jedoch nicht unbedingt kontinuierlich. Wenn lineare Tabellen physisch gespeichert werden, werden sie normalerweise in Form von Arrays und verknüpften Strukturen gespeichert.

    Wie implementiert man eine sequentielle Tabellendatenstruktur mit Java?

    1. Sequenztabelle

    1.1 Was ist eine Sequenztabelle?

    Eine Sequenztabelle ist eine lineare Struktur, die eine Speichereinheit mit kontinuierlichen physischen Adressen verwendet, um Datenelemente der Reihe nach zu speichern. Schließen Sie das Hinzufügen, Löschen, Überprüfen und Ändern von Daten im Array ab.

    Tatsächlich handelt es sich um ein Array. Warum müssen Sie dann eine Sequenztabelle schreiben? Wäre es nicht besser, einfach ein Array zu verwenden? Der Unterschied besteht darin, dass das Schreiben in einer Klasse objektorientiert sein kann.

    Sequenztabellen können im Allgemeinen unterteilt werden in:

    • Statische Sequenztabelle: Array-Speicher mit fester Länge verwenden

    • Dynamische Sequenztabelle: Dynamisch geöffneten Array-Speicher verwenden

    Statische Sequenztabelle eignet sich zur Bestimmung der Menge Muss gespeichert werden Datenszenario

    Das Array fester Länge der statischen Sequenztabelle führt dazu, dass das Öffnen von zu viel Speicherplatz eine Verschwendung ist und das Öffnen von zu wenig Speicherplatz nicht ausreicht Die Sequenztabelle ist flexibler und kann die Speicherplatzgröße je nach Bedarf dynamisch zuweisen

    public class MyArrayList {
       public int[] elem;//数组
       public int usedSize;//数据的有效个数
     
       public MyArrayList(){
           this.elem = new int[10];
       }
    }

    2.4 Elemente an Pos-Position hinzufügen

    In Sequenztabelle einfügen Wenn ein Element eingefügt wird, muss das Element vor der Position gespeichert werden

    //打印顺序表
    public void display(){
            for (int i = 0; i < this.usedSize; i++) {
                System.out.print(this.elem[i] + " ");
            }
            System.out.println();
        }

    2.5 Bestimmen Sie, ob es ein Element enthältWie implementiert man eine sequentielle Tabellendatenstruktur mit Java?

    //获取顺序表长度
        public int size(){
            return this.usedSize;
       }

    2.6 Finden Sie die Position entsprechend einem Element

    //在 pos 位置新填元素
        public void add(int pos,int data){
            if(pos < 0 || pos >usedSize){
                System.out.println("pos 位置不合法!");
                return;
            }
            if(isfull()) {
                Arrays.copyOf(this.elem,2*this.elem.length);
            }
            for (int i = this.usedSize - 1; i >= pos; i--) {
                this.elem[i + 1] = this.elem[i];
            }
            this.elem[pos] = data;
            this.usedSize++;
        }
        //判断是否满
        public boolean isfull(){
            return this.usedSize == this.elem.length;
        }

    2.7 Holen Sie sich das Element an der Pos-Position

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

    2.8 Setzen Sie das Element an der Pos-Position auf den Wert

    //查找某个元素的对应位置,找不到返回-1
        public int search(int toFind){
            for (int i = 0; i < this.usedSize; i++) {
                if(this.elem[i] == toFind){
                    return i;
                }
            }
            return -1;
        }

    2.9 Löschen Sie das Element, das Sie löschen möchten

    //获取pos位置的值
        public int getPos(int pos){
            if(pos < 0 || pos >= this.usedSize){
                System.out.println("pos 位置不合法");
                return -1;//这里说明一下,业务上的处理,不考虑
            }
            if(isEmpty()){
                System.out.println("顺序表为空!");
                return -1;
            }
            return this.elem[pos];
        }
        public boolean isEmpty(){
            return this.usedSize == 0;
        }

    2.10 Löschen Sie die Sequenzliste

     //给pos位置元素更新value
        public void setPos(int pos,int value){
            if (pos < 0 || pos >= this.usedSize){
                System.out.println("pos 位置不合法");
                return;
            }
            if(isEmpty()){
                System.out.println("顺序表为空!");
                return;
            }
            this.elem[pos] = value;
        }
    Wie implementiert man eine sequentielle Tabellendatenstruktur mit Java?3 . MyArrayList.java

    //删除第一次出现的关键字key
        public void remove(int toRmove){
            if (isEmpty()){
                System.out.println("顺序表为空!");
                return;
            }
            int index = search(toRmove);
            if(index == -1){
                System.out.println("没有你要删除的数字!");
                return;
            }
            for (int i = index; i < this.usedSize - 1; i++) {
                this.elem[i] = this.elem[i+1];
            }
            this.usedSize--;
            //this.elem[useSize] = null;如果数组当中是引用数据类型
        }

    4

    Das obige ist der detaillierte Inhalt vonWie implementiert man eine sequentielle Tabellendatenstruktur mit Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen