Rumah >Java >javaTutorial >Cara menggunakan rekursi untuk melaksanakan kelas alat struktur pokok di Jawa

Cara menggunakan rekursi untuk melaksanakan kelas alat struktur pokok di Jawa

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBke hadapan
2023-05-18 16:31:061202semak imbas

Perihalan keperluan

Kadangkala, data kami adalah hierarki Contohnya, hubungan tiga peringkat biasa antara wilayah dan majlis perbandaran ialah satu lapisan di dalam yang lain, seperti yang ditunjukkan di bawah:

Cara menggunakan rekursi untuk melaksanakan kelas alat struktur pokok di Jawa

Apabila kami menyimpan data dalam pangkalan data, ia selalunya dalam bentuk senarai, seperti yang ditunjukkan di bawah:

Cara menggunakan rekursi untuk melaksanakan kelas alat struktur pokok di Jawa

Kemudian apabila kami menanyakannya daripada pangkalan data, Apabila kembali ke hujung hadapan, apabila hujung hadapan perlu memberikan paras pokok, ia mungkin perlu diproses secara rekursif menjadi struktur pokok, jadi alat berikut mungkin berguna.

Contoh penggunaan

Kami mentakrifkan objek Tempat seperti di atas dan menambah anotasi alat:

  • Pengecam unik @TreeKey

  • @TreeParentKey mengenal pasti ID nod induk

  • @TreeChildren mengenal pasti set nod keturunan

  • @Data
    @Data
    public class Place {
    
        @TreeKey
        private String id;
    
        @TreeParentKey
        private String parentId;
    
        private String name;
    
        @TreeChildren
        private List<Place> children;
    
        public Place(String id, String name, String parentId) {
            this.id = id;
            this.name = name;
            this.parentId = parentId;
        }
    }
Ujian>: Kesan akhir:

Cara menggunakan rekursi untuk melaksanakan kelas alat struktur pokok di JawaKod alat

@TreeKey

rreee

@TreeParentKey

public class Test {

    public static void main(String[] args) {
        List<Place> places = new ArrayList<>();
        places.add(new Place("510000", "四川省", "0"));
        places.add(new Place("510100", "成都市", "510000"));
        places.add(new Place("510107", "武侯区", "510100"));
        places.add(new Place("510116", "双流区", "510100"));
        places.add(new Place("511600", "广安市", "510000"));
        places.add(new Place("511603", "前锋区", "511600"));
        places.add(new Place("511621", "岳池县", "511600"));
        List<Place> treeList = TreeUtils.getTree(places, "0");
        System.out.println(JSON.toJSONString(treeList));
    }

}

@TreeChildren

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface TreeKey {
}

@TreeUtils

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface TreeParentKey {
}

Atas ialah kandungan terperinci Cara menggunakan rekursi untuk melaksanakan kelas alat struktur pokok di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam