JAVA高级基础(10)---TreeSet对自定义类型进行定制排序及增强for循环遍历集合

版权声明:如需转载请标明出处 https://blog.csdn.net/yj201711/article/details/84448904

TreeSet

自然排序

对于自定义类型,那么要实现自然排序,需要去 Comparable 接口中的 compareTo 方法。在 compare To 方法中我们可以根据自己的业务要求,来实现自己的排序规则。

定制排序    

在创建容器的时候,给TreeSet创建一个比较器。

创建比较器的方式:三种

  1. 通过自定义的外部类来实现比较器。
  2. 通过在容器的定义类中,来通过内部类来实现一个比较器
  3. 在创建容器的时候,在创建的过程中,通过匿名内部类来创建一个比较器

三种方式相比较而言,3 更好一些(程序的可读性和维护性)。

package org.lanqiao.setDemo;

public class Student {
	private String name;
	private Integer age;
	public Student() {
	}
	public Student(String name, Integer age) {
		this.name = name;
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "Student [name=" + name + ", age=" + age + "]";
	}
	
}
package org.lanqiao.setDemo;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

public class SetDemo {
	public static void main(String[] args) {
		Set set = new TreeSet(new Comparator() {

			@Override
			public int compare(Object o1, Object o2) {
				Student stu = (Student)o1;
				Student stus = (Student)o2;
				int res = stu.getAge().compareTo(stus.getAge());
				if(res == 0 ) {
					
					res = stu.getName().compareTo(stus.getName());
				}
				return res;
			}
		});
		Student stu1 = new Student("张三",21);
		Student stu2 = new Student("李四",18);
		Student stu3 = new Student("王五",22);
		Student stu4 = new Student("赵六",18);
		set.add(stu1);
		set.add(stu2);
		set.add(stu3);
		set.add(stu4);
//		使用迭代器对集合进行遍历
		Iterator iter = set.iterator();
		while(iter.hasNext()) {
			System.out.println(iter.next());
			
		}
		System.out.println("-------------------");
//	使用增强for循环来进行集合的遍历 jdk1.5 新特性
	/*	for(遍历的集合中的每一个元素的类型  变量(标识符):遍历的对象(集合)) {
			
			
		}
		*/
		for(Object obj :set) {//Object obj = Student
			Student stu = (Student)obj;
			System.out.println(stu.getName());
			
		}
		System.out.println("-------------------");
		List list = new ArrayList();
		list.add(1);
		list.add(2);
		list.add(3);
		for(Object obj : list) {
			System.out.println(obj);
			
		}
		System.out.println("-------------------");
		int[] arr = {2,14,6,8,4,32};
		for(int i :arr) {
			System.out.println(i);
			
		}
	}
}

猜你喜欢

转载自blog.csdn.net/yj201711/article/details/84448904
今日推荐