[英]Sorting a List Model in descending order Java
我正在嘗試通過拆分一個字符串來對列表 model 進行排序,該字符串比較我分配給任何給定索引的 id 並將其與另一個索引進行比較,它在我第一次按下按鈕時有效,但是,如果我再次按下按鈕,它會移動兩個索引亂序。
如果您需要我的任何幫助,我們將不勝感激 - 請詢問
我正在拆分的字符串示例:
DRAMA,Harry Potter,2,5698750,JK Rowling,500,08/12/2004,Lyle,0,0
給我帶來麻煩的代碼
public void sortByID()
{
DefaultListModel tmp = new DefaultListModel();
for(int x = 0; x < listModel.size(); x++)
{
String[] a = listModel.get(x).toString().split(",");
for(int y = 0; y < listModel.size(); y++)
{
String[] b = listModel.get(y).toString().split(",");
if(a[2].compareTo(b[2]) > 0 && a[1].equals(b[1]) != true)
{
tmp.add(0, listModel.get(y));
listModel.set(y, listModel.get(x));
listModel.set(x, tmp.get(0));
}
}
}
}
該解決方案的一個問題:
測試compareTo
是否返回正值,無論x
小於還是大於y
。
例如,假設我們只有 2 個 id 排序為["2", "1"]
- 如果x=0, y=1
"2".compareTo("1")
將返回>0
,因此兩個值交換導致["1", "2"]
。
一些迭代之后, x=1, y=0
所以id[x]=="2", id[y]=="1"
,比較( "2".compareTo("1")
)將再次返回>0
並且值將再次交換。
解決方案: y
應始終大於(或始終小於) x
(例如for (int y = x + 1; ...
)
使用調試器並逐步執行應該有助於了解正在發生的事情......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.