JAVA compatartor 的使用方法与实例

 
 

接上文,我们说了Compareable的使用与实例,接下来介绍 compatartor 的使用方法与实例

 compatartor 和Compareable不同,你不用去修改你要排序的类的代码来实现Compareable接口,如果你不想修改你先排序的类的代码
你就可以用 Comparator 

首先来创建一个TestTreeSet1类来测试。第一步.创建一个实现了Comparator接口的类对象

第二步.将此对象作为形参传递给TreeSet的构造器中。

再创建一个Customer类,这是我们要排序的类,是我们在Comparator接口中的compare方法中涉及的对象。你想给哪个对象排序你就得在compare方法中“声明”出来。

然后我们运行TestTreeSet1


可以看到结果也是根据你在compare方法中指定的规则排序的。

不懂的可以私信我哦,也可以拷贝我的代码来实验一下。

public class Customer {
	Integer age;
	String name;
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Customer other = (Customer) obj;
		if (age == null) {
			if (other.age != null)
				return false;
		} else if (!age.equals(other.age))
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}
	public Customer(Integer age, String name) {
		super();
		this.age = age;
		this.name = name;
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((age == null) ? 0 : age.hashCode());
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		return result;
	}
	@Override
	public String toString() {
		return "Customer [age=" + age + ", name=" + name + "]";
	}

}

import java.util.Comparator;
import java.util.TreeSet;

/*
 * TreeSet定制排序
 */
public class TestTreeSet1 {
	//2.将此对象作为形参传递给TreeSet的构造器中
public static void main(String[] args) {
	Com com=new Com();
	TreeSet set=new TreeSet(com);
    //只能添加实现了Comparator接口中的compare方法中涉及的对象
	set.add(new Customer(1005,"ll"));
	set.add(new Customer(1006,"tt"));
	set.add(new Customer(1001,"gg"));
	set.add(new Customer(1001,"bb"));
	set.add(new Customer(1006,"ae"));
	set.add(new Customer(1008,"ac"));
	
	for(Object i:set) {//for循环输出set的对象
		System.out.println(i);
	}
}
	
	}
//1.创建一个实现了Comparator接口的类对象
class Com implements Comparator{
//重写compare 方法
	@Override
	public int compare(Object o, Object l) {
      if(o instanceof Customer&&l instanceof Customer) {
    	  Customer o1=(Customer)o;
    	  Customer l1=(Customer)l;
    	  int i=o1.age.compareTo(l1.age);//先看年龄 再看名字
    	  if(i==0) {
    		  return o1.name.compareTo(l1.name);
    	  }
    	  return i;
      }
		return 0;
	}
	
}

猜你喜欢

转载自blog.csdn.net/weixin_40214269/article/details/80267705