java 运用comparator接口对ArrayList排序无效
java 使用comparator接口对ArrayList排序无效
我想对mRelaItems进行排序(如下代码)
按照ShortcutInfo中的hotseatOrder属性,hotseatOrder是一个整型数
private ArrayList<ShortCutInfo> mRelaItems = new ArrayList<ShortCutInfo>();
...
MyComparator myComparator = new MyComparator();
Collections.sort(mRelaItems, myComparator);
class MyComparator implements Comparator<ShortCutInfo> {
@Override
public int compare(ShortCutInfo object1, ShortCutInfo object2) {
// TODO Auto-generated method stub
if (object1.hotseatOrder < object2.hotseatOrder)
return 1;
return 0;
}
}
但是排序之后 mRelaItems没有变化 排序无效
请大家指教
多谢!!
还有 我这样写是按照从大到小排序呢还是从小到大排呢?
------解决方案--------------------
我调试了一下你的代码,没什么问题,可以实现排序,结果是从大到小,下面是我写的代码
输出结果:
======12======
======7======
======3======
======2======
======1======
我想对mRelaItems进行排序(如下代码)
按照ShortcutInfo中的hotseatOrder属性,hotseatOrder是一个整型数
private ArrayList<ShortCutInfo> mRelaItems = new ArrayList<ShortCutInfo>();
...
MyComparator myComparator = new MyComparator();
Collections.sort(mRelaItems, myComparator);
class MyComparator implements Comparator<ShortCutInfo> {
@Override
public int compare(ShortCutInfo object1, ShortCutInfo object2) {
// TODO Auto-generated method stub
if (object1.hotseatOrder < object2.hotseatOrder)
return 1;
return 0;
}
}
但是排序之后 mRelaItems没有变化 排序无效
请大家指教
多谢!!
还有 我这样写是按照从大到小排序呢还是从小到大排呢?
------解决方案--------------------
我调试了一下你的代码,没什么问题,可以实现排序,结果是从大到小,下面是我写的代码
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class Demo {
public static void main(String[] args) {
ArrayList<ShortCutInfo> mRelaItems = new ArrayList<ShortCutInfo>();
mRelaItems.add(new ShortCutInfo(1));
mRelaItems.add(new ShortCutInfo(12));
mRelaItems.add(new ShortCutInfo(3));
mRelaItems.add(new ShortCutInfo(7));
mRelaItems.add(new ShortCutInfo(2));
MyComparator myComparator = new MyComparator();
Collections.sort(mRelaItems, myComparator);
for(ShortCutInfo c : mRelaItems) {
System.out.println("======" + c.hotseatOrder + "======");
}
}
}
class MyComparator implements Comparator<ShortCutInfo> {
@Override
public int compare(ShortCutInfo object1, ShortCutInfo object2) {
if (object1.hotseatOrder < object2.hotseatOrder)
return 1;
return 0;
}
}
输出结果:
======12======
======7======
======3======
======2======
======1======