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值排序
输出结果:
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值排序
输出结果:
相关文章推荐
- Collections 自定义比较器 Comparator
- java comparable comparator 比较器的使用 及 自定义比较器
- Java自定义比较器Comparator
- Collections.sort()使用自定义比较器进行排序
- Java自定义比较器Comparator
- TreeSet自定义比较器实现Comparator接口,覆盖Compare方法
- 比较器Comparator与自定义排序
- Collections.sort方法实现Comparator比较器进行二分查找
- Collections的自定义排序sort Comparator
- Collections之sort的两个方法(自然排序和自定义比较器排序)
- Collections.sort 用法 比较器comparator
- Collections之sort的两个方法(自然排序和自定义比较器排序)
- SortedMap接口的实现类TreeMap介绍和实现Comparator自定义比较器(转)
- java自定义比较器Comparator
- SortedMap接口的实现类TreeMap介绍和实现Comparator自定义比较器(转)
- TreeSet集合中自定义比较器
- java Collections.sort()实现List排序的默认方法和自定义方法
- Java中常用的比较器Comparable与Comparator
- 11. JAVA常用类库 Part 4 (对象克隆技术clone、Arrays类、Comparable接口、比较器Comparator、观察者设计模式) ----- 学习笔记
- java Collections.sort()实现List排序的默认方法和自定义方法