【发布时间】:2012-08-16 17:33:56
【问题描述】:
我正在尝试对列表中的数据进行排序,该列表的字段 id 有:
field id :field_38637
field id :field_38469
field id :field_38468
field id :field_38638
field id :field_38637
field id :field_38469
field id :field_38468
field id :field_38468
field id :field_38469
field id :field_38468
field id :field_38637
列表数据的大小为 11,对于上面的列表数据,我正在做一个排序如下:
Collections.sort(copedppList, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
Field oo1 = (Field ) o1;
Field oo2 = (Field ) o2;
if(oo1.getFieldId()!=oo2.getFieldId()){}
return 1;
else
return 0;
});
for (int i = 0; i < copedppList.size(); i++) {
Field pp = (Field) copedppList
.get(i);
System.out.println(pp.getFieldID());
}
排序后我得到的列表有
field_38468
field_38468
field_38468
field_38468
field_38468
field_38469
field_38469
field_38469
field_38637
field_38637
field_38637
编辑: 相似的字段 id 在排序后分组在一起,但应该按照以 38637,38469,38468 开头的传入列表进行分组,这里有什么问题?我想保持传入列表的顺序。
【问题讨论】:
-
将列表的所有值放入一个集合中。
-
return 1表示大于。您的代码表明如果a != b然后a > b和b > a这是没有意义的。
标签: java sorting collections compare