import java.util.List;
import java.util.Random;
import java.util.ArrayList;
import java.util.Collections;
/**
* 按自定义规则对list进行排序
*
* @author 237
*
*/
public class Test0517 {
public static void main(String[] args) {
// 生成person的list
List<Person> list = new ArrayList<Person>();
while (list.size() < 12) {
list.add(new Person("zhanglin", new Random().nextInt(10) + 20));
list.add(new Person("wangjianping", new Random().nextInt(10) + 20));
list.add(new Person("chenggang", new Random().nextInt(10) + 20));
}
// 遍历输出list
list.forEach(Person::showPerson);
System.out.println();
// list乱序排列
Collections.shuffle(list);
list.forEach(Person::showPerson);
System.out.println();
// 排序:优先name按字符串从小到大,然后age按从大到小
// 这里使用了lambda表达式
list.sort((Person p1, Person p2) -> {
return p1.name.compareTo(p2.name) == 0 ? p2.age - p1.age : p1.name.compareTo(p2.name);
});
list.forEach(Person::showPerson);
System.out.println();
}
}
class Person {
String name;
int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
void showPerson() {
System.out.println(this.name + ":" + this.age);
}
}
某一次的运行结果:
