您的位置:首页 > 其它

Collections 自定义比较器 Comparator

2017-03-27 18:34 211 查看
package struts.test.action;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class Menu {

private Integer id;

private String name;

private Integer orderValue;

public Integer getId() {
return id;
}

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

public String getName() {
return name;
}

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

public Integer getOrderValue() {
return orderValue;
}

public void setOrderValue(Integer orderValue) {
this.orderValue = orderValue;
}

public static List<Menu> getChildren() {
List<Menu> menuList = new ArrayList();
Menu m1 = new Menu();
m1.setId(1);
m1.setName("李白");
m1.setOrderValue(3);

Menu m2 = new Menu();
m2.setId(2);
m2.setName("杜甫");
m2.setOrderValue(2);

Menu m3 = new Menu();
m3.setId(3);
m3.setName("曹操");
m3.setOrderValue(1);

menuList.add(m1);
menuList.add(m2);
menuList.add(m3);

Collections.sort(menuList, new MenuComparator());
return menuList;
}

public static void main(String[] args) {
List<Menu> menus = getChildren();
for(Menu menu:menus){
System.out.println("id = " + menu.getId() + ";name = " + menu.getName() + ";orderValue = " + menu.getOrderValue());
}

}

}

class MenuComparator implements Comparator<Menu> {
@Override
public int compare(Menu o1, Menu o2) {
if(o1.getOrderValue() > o2.getOrderValue()){
return 1;
}else if(o1.getOrderValue().intValue() == o2.getOrderValue().intValue()){
if(o1.getId()>o2.getId())
return 1;
else if(o1.getId().intValue() == o2.getOrderValue().intValue())
return 0;
else
return -1;
}
else{
return -1;
}
}
}

根据orderValue值先排序,后根据ID值排序

输出结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: