我正试图对ArrayList进行排序,但现在遇到了麻烦。下面,我有一个getId((函数,用于检索成员的id。我想按成员id对ArrayList进行排序。我已经查看了一些关于这方面的好文章,并实现了以下内容:
例如(排序前(11223344556677889900
例如(排序后(00112233445566778899
Member temp;
for (int i = 0; i < members.size(); i++) {
Member s = members.get(i);
System.out.println("S: "+s.getId());
for (int j=0; j < members.size()-1; j++) {
Member t = members.get(j+1);
System.out.println("T: "+t.getId());
if (s.getId() > t.getId()) {
temp = s;
s = t;
t = temp;
}
}
}
}
我做了上面的打印输出语句来跟踪根本原因,但仍在努力找出错误。
交换代码错误:
if (s.getId() > t.getId()) {
temp = s;
s = t;
t = temp;
}
在这里,您只将s
与t
交换,但members
的基础数据不受影响。正确的一个:
for (int i = 0; i < members.size() - 1; i++) {
for (int j = 0; j < members.size() - i - 1; j++) {
Member s = members.get(j);
Member t = members.get(j+1);
if (s.getId() > t.getId()) {
Collections.swap(members, j, j+1);
}
}
}