[英]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.