package cn.sort;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* 集合排序;
*
* 首先先看一下关于集合的排序Demo;
*
* 先创建一个自己的测试类;
* @author Administrator
*
*/
public class SortTest {
public static void main(String[] args) {
// 实例化一个指定类型存储的List集合;
List<String> list = new ArrayList<String>();
// 集合数据装载;
list.add("aaa");
list.add("ccc");
list.add("bbb");
// 利用Collections工具类的sort()进行升序;
Collections.sort(list);
// 控制台数据打印;
System.out.println(list);
}
}
package cn.sort;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
*
* 集合对象排序|根据集合中对象的指定属性进行排序;
*
* 下面整理一下关于集合对象的排序规则;
*
* 利用实现Comparator来进行排序;
*
* 首先还是和以往一样,创建一个自己的测试类;
* @author Administrator
*
*/
public class CollectionsSort {
/**
* Java主函数|入口;
* @param args
*/
public static void main(String[] args) {
/**
* 实例化一个指定对象存储的List集合;
*/
List<Student> list = new ArrayList<Student>();
// 对象数据装载;
Student b = new Student("BBB","Y",32);
Student c = new Student("CCC","x",33);
Student a = new Student("AAA","Y",31);
// 集合数据装载;
list.add(a);
list.add(b);
list.add(c);
// 调用排序规则;
sortObj(list);
//重新打印排序后的集合数据;
for(Student people : list) {
// 控制台数据打印;
System.out.println(people.getAge());
}
}
/**
* 封装排序函数|方法;
* @param list
*/
public static void sortObj(List<Student> list) {
/**
* 自定义排序规则;
*
* 利用Collections工具类的sort()方法进行重写排序规则;
*/
Collections.sort(list, new Comparator<Student>() {
/**
* 重写排序规则;
* @param a
* @param b
* @return
*/
@Override
public int compare(Student a, Student b) {
/**
* 自定义排序规则;
*
* 如果没有明确具体的排序内容,可以直接进行对象排序;
* Eg: a.compareTo(b);
*
* 如果有明确的需求说要对某个集合中的对象按照指定属性进行排序,
* 则可以按照以下方式进行自定义排序;
*/
String one = a.getSex();
String two = b.getSex();
// return two.compareTo(one);
return one.compareTo(two);
}
});
}
}
/**
* 封装自定义排序规则;
*
* 下面是将排序规则封装进入自己特定的工具类中,
* 可以根据不同的需求封装不同的函数|方法;
* @author Administrator
*
*/
class sortUtils implements Comparator {
@Override
public int compare(Object o1, Object o2) {
String a = (String) o1;
String b = (String) o2;
return -a.compareTo(b);
}
}
/**
* 临时创建一个Entity测试类;
*
* @author Administrator
*
*/
class Student {
// 初始化私有属性;
private String name;
private String sex;
private int age;
/**
* 由于申明了有参构造,故而
* 在这里需要重新申明无参构造器;
*
* 在默认的情况下无参构造器就存在,只是当创建了有参构造器之后便覆盖了无参构造器;
* 所以需要自己重现有参构造器;
*/
public Student() {}
/**
* 申明有参构造器;
*
* 根据指定顺序的构造器进行对象初始化;
* @param name
* @param sex
* @param age
*/
public Student(String name, String sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
}
/**
* Get/Set;
* @return
*/
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}