0
点赞
收藏
分享

微信扫一扫

Guava系列:Ordering使用方法(单元素、对象多属性排序)

前端王祖蓝 2022-01-31 阅读 68


目录

​​应用场景​​

​​单元素​​

​​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);


}
}

Guava系列:Ordering使用方法(单元素、对象多属性排序)_java

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));


}
}

Guava系列:Ordering使用方法(单元素、对象多属性排序)_应用场景_02


对象多属性排序

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());
}
}

Guava系列:Ordering使用方法(单元素、对象多属性排序)_应用场景_03


补充:默认多个字段排序

Guava系列:Ordering使用方法(单元素、对象多属性排序)_应用场景_04

Guava系列:Ordering使用方法(单元素、对象多属性排序)_字段_05


举报

相关推荐

0 条评论