索鸟网

  1. 首页
  2. Comparable & Comparator简介

Comparable & Comparator简介


在集合框架中,如果某个集合中的序列要使用Collections.sort()方法,则必需实现Comparable接口。

Comparable & Comparator



JAVA 集合框架的主要成员:


示例:创建一个Student类型(基本数据类型的包装类的List(集合)可直接使用Collections.sort()方法)的List,向其添加学生并通过Collections.sort()方           法排序输出。

1.创建学生类,继承Comparable接口

package imooc;

import java.util.HashSet;
import java.util.Set;

//学生类
public class Student implements Comparable<Student>{
	public String id;
	public String name;
	public Set<Course> courses;
	public Student(String id,String name){
		this.id=id;
		this.name=name;
		this.courses =new HashSet<Course>();
	}
@Override
	public int compareTo(Student o) {        //通过ID比较排序
		// TODO Auto-generated method stub
		return this.id.compareTo(o.id);
	}
	

}
2.创建一个studentComparator类,继承Comparator接口

package imooc;

import java.util.Comparator;

public class studentComparator implements Comparator<Student> {

	@Override
	public int compare(Student a, Student b) {   //通过姓名比较排序
		// TODO Auto-generated method stub
		return a.name.compareTo(b.name);
	}

}
测试类


package imooc;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
 //测试student类型的List
	   public void testStudent(){
		   List<Student> list3=new ArrayList<Student>();
		   Random random=new Random();
		   list3.add(new Student(random.nextInt(1000)+"","jack"));
		   list3.add(new Student(random.nextInt(1000)+"","anei"));
		   list3.add(new Student(random.nextInt(1000)+"","back"));
		   System.out.println("---排序前----");
		   for(Student s:list3){
			   System.out.println(s.id+" "+s.name);
		   }
		   System.out.println("---排序后----");
		   System.out.println("按照ID排序:");
		   Collections.sort(list3);
		   for(Student s:list3){
			   System.out.println(s.id+" "+s.name);
		   }
		   System.out.println("按照姓名排序:");
		   Collections.sort(list3,new studentComparator());
		   for( Student s2:list3){
			   System.out.println(s2.id+" "+s2.name );
		   }
		   
	   }
public static void main(String[] args) {
		testCollection it=new testCollection();
		it.testStudent();
结果:




来源地址:http://blog.csdn.net/i_belive_my_love/article/details/78227436 版权归作者所有!

相关教程

  • Comparable和Comparator的比较

    Comparable接口--可比较的 (1)实现该接口镖师:这个类的实例可以比较大小,可以进行自然排序 (2)定义了默认的比较规则 (3)其实现类需实现compareTo()方法 (4)compareTo()方法返回正数表示大,负数表示小,0表示相等 Comparator接口—比较工具接口 (1)用于定义临时比较规则,而不是默认比较规则 (2)其实现类需要实现compa
  • java comparable 和 comparator

    一、Comparable(内部排序接口) 实现该接口的类,支持自然排序(内排序)。Arrays.sort(Object[])和Collection.sort(Object[])要求对象必须实现Comparable接口 文档中指出: 如果该对象大于指定对象,返回正整数 如果该对象等于指定对象,返回0 如果该对象小于指定对象,返回负整数 建议(x.comp
  • 【comparator, comparable】小总结

    有些类是直接实现了Comparable接口的,这个时候如果要改写排序条件,就直接改写Comparable接口的CompareTo方法 有些类不是用Comparable接口,而是用了个Comparator类,这时候改写Compare方法 Comparable接口:只有一个方法compareTo(T o). 具体实践中一般写作o与某个的比较,比如o.ag
  • Java Comparator与Comparable辨析

    Comparator与Comparable辨析 声明 文章均为本人技术笔记,转载请注明出处:[1] https://segmentfault.com/u/yzwall[2] blog.csdn.net/j_dark/ 比较三种状态 根据需求定义“序”(升序 or 降序); LESS_THAN: 返回负数,表示比较两元素满足序,无须调整,; EQUAL:
  • comparable,Comparator,compare,compareTo的小总结

    这里不说具体的算法排序,总结一下comparable,Comparator,compare,compareTo,,Collections.sort(),Arrays.sort()等一些语法上的知识点以及开始学习写博客记录学习。 Comparable是接口,compareTo是接口内的方法,一个类要实现排序就必须重写compareTo方法。compareTo方法
  • List集合序列排序的两种方法

    首先讲一下Comparable接口和Comparator接口,以及他们之间的差异。有助于Collections.sort()方法的使用 Comparable & Comparator 接口都可以用来实现集合中元素的比较、排序,Comparator位于包java.util下,而Comparable位于包java.lang下,Comparable接口将比较代码嵌入
  • 【java源码一带一路系列】之TreeMap

    TreeMap基于红黑树实现,在之前HashMap篇章中有所涉及,所以本篇重点不在此。上路~ containsKey() --> getEntry() --> getEntryUsingComparator() /** * Returns {@code true} if this map contains a mapping for th
  • 【156天】尚学堂高琪Java300集视频精华笔记(125)

    第125集:引用类型、内置类比较、Comparator排序工具类实现 区分Comparable与Comparator的应用场景 区分comparator与comparable的关键在于,认识到,comparator是将用于比较的规则从被比较的数据源所在的类中,单独拿了出来。而comparable则是将用于比较的规则和数据源放在了一个类里。 例1:用Com