Java集合排序|集合对象排序|根据集合中对象的指定属性进行排序;

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章