設計乙個A表資料抽取到B表的抽取過程

2022-03-28 01:23:12 字數 1472 閱讀 2062

原題如下:

解題**如下:

table1類:

1

@data

2@noargsconstructor

3@allargsconstructor

4public

class

table1

table2類:

1

@data

2@noargsconstructor

3@allargsconstructor

4public

class

table2

changetable類:

1

@data

2@noargsconstructor

3@allargsconstructor

4class

node

14@data

15public

class

changetable else35}

36}37//

生成零散節點,方便獲取

38private

void createmap(listdatas) 42}

43//

生成新錶資料

44private

void

createtable2() 49}

50//

使用深度優先遍歷產生資料

51private

void createrow(node node,int

depth) else66}

67}68public listgettable2(listdatalist)

74 }

test類:

1

public

class

test 21}

22 }

演算法解析:注釋已經解釋的非常詳細了,具體過程我就不再敘述了。

其中table1與table2是兩個po物件,而@data註解相當於被註解類中所有成員加上了get、set方法,@noargsconstructor為無參構造方法,@allargsconstructor為全參構造方法。

執行結果:

注意:當資料非常多時,這種設計將不再適用,因為將所有資料載入到記憶體中會導致棧溢位。這時可以先將資料庫中所有省列查詢出來,(省列沒有上級編號,這就是很好的查詢條件);接著迴圈遍歷省列,根據遍歷的省查詢出下面所有市;然後遍歷查詢出來的所有市得到市下面的所有區;然後遍歷區下面的所有公司,最後組裝資料。雖然效能遠不如一次性匯入資料,但針對於資料量大時是非常好的解決辦法。

關於權重的隨機抽取演算法,抽乙個次或抽多次的實現

遊戲伺服器開發還真會常遇到,策劃需求根據權重作概率發獎勵,比如獎勵和權重分別是 a10 b20 c70,這時候出現a的概率就要是10 b就是20 c是70 就是出現的概率是當前權重 總權重。該怎麼設計演算法呢?抽多個獎勵id並且每個獎勵id只能出現一次時候改怎樣實現呢?通過總權重隨機值,再線性掃瞄,...

資料表資料遷移 複製乙個表的資料到另外乙個表

通過 sql,你可以從乙個表複製資訊到另乙個表。mysql 資料庫不支援 select into 語句,但支援 insert into select select into 語句從乙個表複製資料,然後把資料插入到另乙個新錶中。create table 新錶 as select from 舊表 我們可...

存在乙個表而不在另乙個表的資料

方法一 僅適用單個字段 使用 not in 容易理解,效率低 select a.id from a where a.id not in select id from b 方法二 適用多個字段匹配 使用 left join.on.b.id isnull 表示左連線之後在b.id 欄位為 null的記錄...