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