【Java】TreeSet & TreeMap

TreeSet 和 TreeMap 可以实现对对象的排序

使用重写comparable接口方式

import java.util.TreeMap;
import java.util.TreeSet;

import org.omg.CORBA.PUBLIC_MEMBER;

/**
 * TreeSet实现排序,此为实现comparable接口来进行比较
 * 如果重写的compareTo方法中比较的变量相等,则只存储第一个进入TreeSet/TreeMap的对象
 * TreeMap实现按照键值对中的key进行comparable规则排序
 * @author 袁盛桐
 */
public class TreeSetComparable implements Comparable<TreeSetComparable> {
	//为了避免进入TreeSet后的对象值被修改,使用final
	public final String Name;
	public final int Age;
	
	
	
	public TreeSetComparable(String name, int age) {
		super();
		Name = name;
		Age = age;
	}

	@Override
	public String toString() {
		return "Name:"+Name+",Age:"+Age;
	}
	
	@Override
	public int compareTo(TreeSetComparable o) {
		return this.Age>o.Age?1:(this.Age==o.Age?0:-1);
	}
	
	public static void main(String[] args) {
		TreeSetComparable a = new TreeSetComparable("a",10);
		TreeSetComparable b = new TreeSetComparable("b",20);
		TreeSetComparable c = new TreeSetComparable("c",6);
		TreeSetComparable d = new TreeSetComparable("d",6);
		
		//c和d的Age相同,所以只存入c
		TreeSet<TreeSetComparable> demo = new TreeSet<TreeSetComparable>();
		demo.add(a);
		demo.add(b);
		demo.add(c);
		demo.add(d);
		System.out.println(demo);
		
		TreeMap<TreeSetComparable,String> demo2 = new TreeMap<TreeSetComparable, String>();
		demo2.put(a,"a");
		demo2.put(b,"b");
		demo2.put(c,"c");
		demo2.put(d,"d");
		System.out.println(demo2);
		
		
		
	}
}

使用给TreeSet传入comparator匿名排序逻辑类方式

import java.util.Comparator;
import java.util.TreeSet;
/**
 * 使用一个匿名comparator类来时先业务排序逻辑传入TreeSet
 * @author 袁盛桐
 *
 */
public class TreeSetMapComparator  {
	//为了避免进入TreeSet后的对象值被修改,使用final
		public final String Name;
		public final int Age;
		
		
		public TreeSetMapComparator() {
			super();
			this.Name = null;
			this.Age = 0;
		}
		
		public TreeSetMapComparator(String name, int age) {
			super();
			Name = name;
			Age = age;
		}

		@Override
		public String toString() {
			return "Name:"+Name+",Age:"+Age;
		}
		
		public static void main(String[] args) {
			TreeSet<TreeSetMapComparator> demo = new TreeSet<TreeSetMapComparator>(
					new Comparator<TreeSetMapComparator>() {
						
						@Override
						public int compare(TreeSetMapComparator o1,TreeSetMapComparator o2) {
							return o1.Age>o2.Age?1:(o1.Age==o2.Age?0:-1);
						}
					}
					);
			
			demo.add(new TreeSetMapComparator("aa",10));
			demo.add(new TreeSetMapComparator("bb",20));
			demo.add(new TreeSetMapComparator("cc",8));
			
			System.out.println(demo);
		}
}

猜你喜欢

转载自blog.csdn.net/weixin_38516944/article/details/81843379