使用Collections.sort()实现List正反排序的方法
2016-03-31 18:52
549 查看
今天遇到了这个问题,了解到有两种解决方法:
1,具体的比如List<Sort>这个List, Sort类实现Comparable接口,然后实现compareTo(Object o)方法
2,新建newComparator比较器类实现Comparator接口,实现compare(Object o1, Object o2)方法
例子:
servlet:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String order = request.getParameter("order");
String number = request.getParameter("number");
String[] array = number.split(",");
List<Num> arrayList = new ArrayList<Num>();
for (String one : array) {
arrayList.add(new Num(Integer.parseInt(one), order));
}
if (order.equals("asc")) {
Collections.sort(arrayList);
} else {
Collections.sort(arrayList);
}
String sortedNum = "";
Iterator iter= arrayList.iterator();
while (iter.hasNext()) {
sortedNum += iter.next();
}
request.setAttribute("sortedNum", sortedNum);
request.getRequestDispatcher("sorted.jsp").forward(request, response);
}
Num类(需要比较的实体类):
public class Num implements Comparable{
public int value;
public String order;
public Num(Integer value, String order) {
this.value = value;
this.order = order;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return value+"";
}
@Override
public int compareTo(Object o) {
// TODO Auto-generated method stub
Num b = (Num)o;
if (b.order.equals("asc")) {
return this.value - b.value;
} else {
return b.value - this.value;
}
}
}
正序比较器:
public class AscComparator implements Comparator{
@Override
public int compare(Object o1, Object o2) {
// TODO Auto-generated method stub
Num a = (Num)o1;
Num b = (Num)o2;
int x = a.value;
int y = b.value;
return (x < y) ? -1 : ((x == y) ? 0 : 1);
}
}
倒序比较器:
public class DescComparator implements Comparator{
@Override
public int compare(Object o1, Object o2) {
// TODO Auto-generated method stub
Num a = (Num)o1;
Num b = (Num)o2;
int x = a.value;
int y = b.value;
return (x < y) ? 1 : ((x == y) ? 0 : -1);
}
}
1,具体的比如List<Sort>这个List, Sort类实现Comparable接口,然后实现compareTo(Object o)方法
2,新建newComparator比较器类实现Comparator接口,实现compare(Object o1, Object o2)方法
例子:
servlet:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String order = request.getParameter("order");
String number = request.getParameter("number");
String[] array = number.split(",");
List<Num> arrayList = new ArrayList<Num>();
for (String one : array) {
arrayList.add(new Num(Integer.parseInt(one), order));
}
if (order.equals("asc")) {
Collections.sort(arrayList);
} else {
Collections.sort(arrayList);
}
String sortedNum = "";
Iterator iter= arrayList.iterator();
while (iter.hasNext()) {
sortedNum += iter.next();
}
request.setAttribute("sortedNum", sortedNum);
request.getRequestDispatcher("sorted.jsp").forward(request, response);
}
Num类(需要比较的实体类):
public class Num implements Comparable{
public int value;
public String order;
public Num(Integer value, String order) {
this.value = value;
this.order = order;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return value+"";
}
@Override
public int compareTo(Object o) {
// TODO Auto-generated method stub
Num b = (Num)o;
if (b.order.equals("asc")) {
return this.value - b.value;
} else {
return b.value - this.value;
}
}
}
正序比较器:
public class AscComparator implements Comparator{
@Override
public int compare(Object o1, Object o2) {
// TODO Auto-generated method stub
Num a = (Num)o1;
Num b = (Num)o2;
int x = a.value;
int y = b.value;
return (x < y) ? -1 : ((x == y) ? 0 : 1);
}
}
倒序比较器:
public class DescComparator implements Comparator{
@Override
public int compare(Object o1, Object o2) {
// TODO Auto-generated method stub
Num a = (Num)o1;
Num b = (Num)o2;
int x = a.value;
int y = b.value;
return (x < y) ? 1 : ((x == y) ? 0 : -1);
}
}
相关文章推荐
- JavaScript 基础知识点
- js中接口的实现
- JPA(hibernate实现)与mybatis对比
- android自定义UI组件
- 小数位数的处理(JS前端,C#后台,SQL处理,报表处理)
- js获取html5 audio 音频时长方法
- 【bzoj2669】【cqoi2012】【局部极小值】【状压dp】
- 简单工厂模式
- hdu 5651
- C++实验2—作业
- IP协议
- caffe windows 训练自己的图片数据
- Intellij IDEA常用配置详解
- Visual Studio 2015的安装和简单的测试
- Android 属性动画(Property Animation) 完全解析
- 使用官方仓库在Ubuntu 14.04 LTS上安装Webmin
- 第五周总结日记
- iOS开发上传图片的压缩
- cacti有图无数据
- ffmpeg: 视频转码命令例子