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

Wie implementiert man eine sequentielle Tabellendatenstruktur mit Java?

WBOY
Freigeben: 2023-04-21 14:31:08
nach vorne
1810 Leute haben es durchsucht

    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];
       }
    }
    Nach dem Login kopieren

    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();
        }
    Nach dem Login kopieren

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

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

    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;
        }
    Nach dem Login kopieren

    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;
        }
    Nach dem Login kopieren

    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;
        }
    Nach dem Login kopieren

    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;
        }
    Nach dem Login kopieren

    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;
        }
    Nach dem Login kopieren
    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;如果数组当中是引用数据类型
        }
    Nach dem Login kopieren

    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!

    Verwandte Etiketten:
    Quelle:yisu.com
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage