Android集合中对象排序

如果将集合中的对象进行排序,最近使用了一个简单的方法解决了,随笔记下来。

主要思路:

首先,新建类实现Comparator<?>,这个类是做比较的关键类,一般做比较的类型 int 或 String类型。

如果属性为Int类型比较方式为    rhs.getAge() - lhs.getAge();

如果属性为String类型方式为     rhs.getName.compareTo(lhs.Name);

以上为降序写法, 如果是升序将 rhs与lhs顺序颠倒即可。

public class order implements Comparator<Model> {

	@Override
	public int compare(Model lhs, Model rhs) {
		// TODO Auto-generated method stub
		return rhs.getAge() - lhs.getAge();
	}

}

第二、做一个测试类,测试一下比较的结果。

注意下面Collections.sort(mm, new order())方法,括号里面参数1为要排序的实体集合,第二个参数为上面

写比较方法的类。

public class MainActivity extends Activity {
	public List<Model> mm = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		mm = new ArrayList<Model>();
		for (int i = 0; i < 3; i++) {
			Model model = new Model();
			model.setAge(11 + i);
			model.setId(22);
			model.setName("asdf");
			mm.add(model);
		}
		
		Collections.sort(mm, new order());
		for (int i = 0; i < mm.size(); i++) {
			int age = mm.get(i).getAge();
			System.out.println("------------->" + age);
		}
	}
}

输出结果

以下是实体类

public class Model {

	private int id;
	private String name;
	private int age;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

}

猜你喜欢

转载自kt-g.iteye.com/blog/2176773