Java对List元素进行按自定义排序

有时候我们需要对list进行排序,方便我们查阅,下面就是本人做的一个小测试。

package www.huarui.biz.jfreecharts;

public class BuffBean {
private String month = null;
private int count = 0;
public String getMonth() {
return month;
}
public void setMonth(String month) {
this.month = month;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
}

package www.huarui.biz.jfreecharts;


import java.util.Comparator;


@SuppressWarnings("unchecked")
public class ComparatorBean implements Comparator {
@Override
public int compare(Object o1, Object o2) {
BuffBean bean1 = (BuffBean) o1;
BuffBean bean2 = (BuffBean) o2;
int flag = bean1.getMonth().compareTo(bean2.getMonth());
return flag;


}
}

public CategoryDataset yearOfLineDataset(int year) {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
MysqlJDBCUtil MysqlJDBCUtil = new MysqlJDBCUtil();
String sql = MysqlJDBCUtil.JDBC_Sql(year);
ArrayList max = produceMonth(year);
List buffList = MysqlJDBCUtil.executeSQL(sql);
ArrayList min = new ArrayList();
for (int i = 0; i < buffList.size(); i++) {
BuffBean bean = (BuffBean) buffList.get(i);
if (bean != null)
min.add(bean.getMonth());
}
List list = diff(max, min);
for (int j = 0; j < list.size(); j++) {
BuffBean sort = new BuffBean();
sort.setMonth(list.get(j).toString());
sort.setCount(0);
buffList.add(sort);
}
ComparatorBean comparator = new ComparatorBean();
Collections.sort(buffList, comparator);//使用自定义排序
for (int i = 0; i < buffList.size(); i++) {
BuffBean b = (BuffBean) buffList.get(i);
System.out.println("bean-month=" + b.getMonth());
System.out.println("bean-count=" + b.getCount());
dataset.addValue(b.getCount(), year + "", b.getMonth());
}
return dataset;
}

转载于:https://my.oschina.net/qiuzhping/blog/611666

Java中可以使用Collections.sort()方法对List进行排序,也可以使用Comparator接口自定义排序规则。 1. 使用Collections.sort()方法排序 使用Collections.sort()方法排序需要实现Comparable接口,重写compareTo()方法,示例如下: ```java public class Person implements Comparable<Person> { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } @Override public int compareTo(Person p) { // 按照年龄升序排序 return this.age - p.age; } } ``` 然后使用Collections.sort()方法对List进行排序: ```java List<Person> personList = new ArrayList<>(); personList.add(new Person("Tom", 20)); personList.add(new Person("Jerry", 18)); personList.add(new Person("Mike", 22)); Collections.sort(personList); for (Person p : personList) { System.out.println(p.getName() + " " + p.getAge()); } ``` 输出结果为: ``` Jerry 18 Tom 20 Mike 22 ``` 2. 使用Comparator接口自定义排序规则 如果需要自定义排序规则,可以使用Comparator接口,实现compare()方法,示例如下: ```java public class PersonComparator implements Comparator<Person> { @Override public int compare(Person p1, Person p2) { // 按照年龄降序排序 return p2.getAge() - p1.getAge(); } } ``` 然后使用Collections.sort()方法和自定义的Comparator对List进行排序: ```java List<Person> personList = new ArrayList<>(); personList.add(new Person("Tom", 20)); personList.add(new Person("Jerry", 18)); personList.add(new Person("Mike", 22)); Collections.sort(personList, new PersonComparator()); for (Person p : personList) { System.out.println(p.getName() + " " + p.getAge()); } ``` 输出结果为: ``` Mike 22 Tom 20 Jerry 18 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值