簡體   English   中英

如何有效地在SWT / Swing表中填充數百萬條記錄

[英]How to populate millions of Records in a SWT/Swing Table efficiently

這是一個普遍的問題,但是我有一個特殊的情況-我正在從<XYZ>硬件設備通過JNI層獲取記錄,它給了我數百萬/大量的記錄,並在SWT Table中處理所有記錄,就像在弄亂您的記錄一樣在牆上,它只是崩潰了。

因此,為了進行有效的編程,我使用了ScrollBar,我將UI大小乘以wrt滾動到滾動條,然后填充了很多特定數據,然后再次移動了滾動條,又再次填充了下一組數據,但是我意識到這根本不高效之所以這樣,是因為在滾動條的每一次移動中,我都是通過JNI層調用硬件的,這是非常昂貴的方式

所以現在我有一點時間考慮更新邏輯。 請給我一些有效的算法。

沒有任何分頁策略,只有垂直的ScrollBar直到最后一條記錄

百萬只是一個數字,並非必須擁有百萬條記錄。 我只想知道一些有效的算法來填充大量記錄

如果我沒記錯的話, JTable的“問題”之一就是它遍歷整個模型以計算列的大小。 因此,即使使用滾動條,它也會在第一次繪制時遍歷整個模型(而不僅僅是可視化部分)。

SwingX的JXTable允許在您的列上設置原型值( TableColumnExt#setPrototypeValue ),從而避免了這種循環。 設置此值可以大大縮短表創建時間。

我會說您使用某種數據存儲來有效地表示數據。 取決於數據,但是可以使用一組自定義對象。 然后,將其包裝到您自己的自定義TableModel中 ,讓Swing負責其余的工作。 未顯示的數據完全不需要任何資源。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM