目录
应用场景
单元素
top N查询
对象多属性排序
补充:默认多个字段排序
应用场景
排序:单元素、对象多属性排序
单元素
package com.nio4444.demo;
import com.google.common.collect.Lists;
import com.google.common.collect.Ordering;
import java.util.Collections;
import java.util.List;
public class OrderingDemo {
public static void main(String[] args) {
List list = Lists.newArrayList() ;
list.add(new Integer(4));
list.add(new Integer(1));
list.add(new Integer(3));
list.add(new Integer(2));
list.add(new Integer(6));
list.add(new Integer(8));
list.add(new Integer(7));
Collections.sort(list);
System.out.println("默认\n"+list);
Ordering ordering = Ordering.natural();
Collections.sort(list,ordering);
System.out.println("\nordering\n"+list);
System.out.println("min、max:"+ordering.min(list)+" "+ordering.max(list));
Collections.sort(list,ordering.reverse());
System.out.println("\nreverse\n"+list);
}
}
top N查询
package com.nio4444.demo;
import com.google.common.collect.Lists;
import com.google.common.collect.Ordering;
import java.util.Collections;
import java.util.List;
public class OrderingDemo {
public static void main(String[] args) {
List list = Lists.newArrayList() ;
list.add(new Integer(4));
list.add(new Integer(1));
list.add(new Integer(3));
list.add(new Integer(2));
list.add(new Integer(6));
list.add(new Integer(8));
list.add(new Integer(7));
Collections.sort(list);
System.out.println("默认\n"+list);
Ordering ordering = Ordering.natural();
System.out.println("\ngreatestOf top3: "+ordering.greatestOf(list,3));
System.out.println("\nleastOf top3: "+ordering.leastOf(list,3));
}
}
对象多属性排序
package com.nio4444.demo;
import com.google.common.collect.Lists;
import com.google.common.collect.Ordering;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class OrderingDemo {
public static void main(String[] args) {
List list = Lists.newArrayList() ;
list.add(new Person(4,"44"));
list.add(new Person(1,"11"));
list.add(new Person(3,"33"));
list.add(new Person(7,"33"));
list.add(new Person(5,"55"));
list.add(new Person(3,"00"));
System.out.println("\n---------------list------\n" + list);
System.out.println("\n---------------age------" );
Ordering nameOrdering = Ordering.from(new AgeComp());
Collections.sort(list,nameOrdering);
System.out.println("\nordering\n"+list);
System.out.println("min、max:"+nameOrdering.min(list)+" "+nameOrdering.max(list));
Collections.sort(list,nameOrdering.reverse());
System.out.println("\nreverse\n"+list);
System.out.println("\n--------------- name & age-----" );
Ordering nameAgeOrdering = Ordering.from(new NameComp()).compound(new AgeComp());
Collections.sort(list,nameAgeOrdering);
System.out.println("\nordering\n"+list);
System.out.println("min、max:"+nameAgeOrdering.min(list)+" "+nameAgeOrdering.max(list));
Collections.sort(list,nameAgeOrdering.reverse());
System.out.println("\nreverse\n"+list);
}
}
@Data
@AllArgsConstructor
class Person{
private int age ;
private String name ;
}
class AgeComp implements Comparator<Person>{
@Override
public int compare(Person o1, Person o2) {
return o1.getAge()-o2.getAge();
}
}
class NameComp implements Comparator<Person>{
@Override
public int compare(Person o1, Person o2) {
return o1.getName().compareTo(o2.getName());
}
}