package com.qunar.google.guava.objects;
import com.google.common.base.Function;
import com.google.common.collect.Lists;
import com.google.common.collect.Ordering;
import com.qunar.google.guava.User;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class OrderingTest {
public static void main(String[] args) {
userOrdering();
intOrderIng();
}
private static void intOrderIng() {
List intList = Lists.newArrayList();
for (int i = 1; i < 20; i++) {
intList.add(new Random().nextInt(i * 200));
}
System.out.println("origin int list =" + intList);
Ordering intOrdering = new Ordering() {
@Override
public int compare(Integer left, Integer right) {
return left.compareTo(right);//排序完成后,默认为从小到大.
}
};
List greateThan300 = intOrdering.greatestOf(intList, 300);
System.out.println(greateThan300);//这个比较吊,如果从一堆订单中,取出金额大于300的,这个方法就非常的好用.
System.out.println(intOrdering.isOrdered(greateThan300));//是否是排好顺序的.
List orderIntList = intOrdering.sortedCopy(greateThan300);
System.out.println("orderedIntList="+orderIntList);
Ordering> lexicographical = intOrdering.lexicographical();
List intStringList = Lists.transform(intList, new Function() {
@Override
public String apply(Integer input) {
return String.valueOf(input);
}
});
List> list=Lists.newArrayList();
list.add(intList);
list.add(orderIntList);
List> iterables = lexicographical.sortedCopy(list);//不知道这个类有啥用,先有个印象吧,这个东西还是挺吊的.
for (Iterable iterable : iterables) {
for (Integer integer : iterable) {
System.out.println(integer);
}
}
}
private static void userOrdering() {
Ordering byIdOrder = new Ordering() {
@Override
public int compare(User left, User right) {
return left.getId().compareTo(right.getId());
}
};
ArrayList userList = Lists.newArrayList();
for (int i = 1; i < 5; i++) {
User user = new User();
user.setAddress("aaa");
user.setId(new Random().nextLong() + "11");
userList.add(user);
}
for (User user : userList) {
System.out.println(" id= " + user.getId());
}
List users = byIdOrder.sortedCopy(userList);
for (User user : users) {
System.out.println("id sorted=" + user.getId());
}
}
}