编写比较器 comparator

/*
	让SortedSet集合做到排序还有另一种方式:java.util.Comparator; 

	单独编写一个比较器.

*/
import java.util.*;

public class SortedSetTest03{

	public static void main(String[] args){

		//创建TreeSet集合的时候提供一个比较器.
		//SortedSet products = new TreeSet(new ProductComparator());

		//匿名内部类:不推荐使用,因为比较器无法得到重复利用。
		SortedSet products = new TreeSet(new Comparator(){
			//需求:按照商品价格排序
			public int compare(Object o1, Object o2){

				double price1 = ((Product)o1).price;
				double price2 = ((Product)o2).price;

				if(price1==price2){
					return 0;
				}else if(price1>price2){
					return 1;
				}else{
					return -1;
				}
			}
		});

		Product p1 = new Product(3.4);
		Product p2 = new Product(4.0);
		Product p3 = new Product(3.0);
		Product p4 = new Product(2.0);
		Product p5 = new Product(5.0);

		//添加元素
		products.add(p1);
		products.add(p2);
		products.add(p3);
		products.add(p4);
		products.add(p5);

		//遍历
		Iterator it = products.iterator();
		while(it.hasNext()){
			System.out.println(it.next());
		}

	}
}

class Product{

	double price;

	Product(double price){
		this.price = price;
	}

	public String toString(){
		return price + "";
	}

}

//单独编写一个比较器
/*
class ProductComparator implements Comparator{

	//需求:按照商品价格排序
	public int compare(Object o1, Object o2){

		double price1 = ((Product)o1).price;
		double price2 = ((Product)o2).price;

		if(price1==price2){
			return 0;
		}else if(price1>price2){
			return 1;
		}else{
			return -1;
		}
	}

}
*/
时间: 2024-10-26 12:20:18

编写比较器 comparator的相关文章

类的可比较性Comparable和比较器Comparator

1. Comparable Comparable源码如下: public interface Comparable<T> { public int compareTo(T o); } 类实现该接口意味着该类是可比较的,其方法返回值-1,0,1分别表示当前类比进行比较的类(方法参数)小.相等.大. 实现该接口意味着该类有了'可比较'的属性. 2. Comparator Comparator部分源码如下: @FunctionalInterface public interface Comparat

Java Map集合利用比较器Comparator根据Key和Value的排序

TreeMap排序 根据Key进行排序 Map的根据key排序需要用到TreeMap对象,因为它是默认按照升序进行输出的,可以使用比较器compareTo对它进行降序排序,Comparator可以对集合对象或者数组进行排序的比较器接口,实现该接口的public compare(T o1,To2)方法即可实现排序,该方法主要是根据第一个参数o1,小于.等于或者大于o2分别返回负整数.0或者正整数,若是按照升序可以直接省略比较器代码Map<String, String> treeMap = new

java比较器Comparator 使用

PresonDemo package cn.stat.p5.person.demo; public class PresonDemo implements Comparable { private String name; private int age; /** * @param args */ public String getName() { return name; } public void setName(String name) { this.name = name; } publ

Java中Compareable和Comparator两种比较器的区别

Java中Compareable和Comparator两种比较器的区别 1.引言 在java这个处处是对象的世界里,对两个对象进行按某一属性进行比较是特别常见的需求.比如书店中的书按照价格比较,亦或者是学生按照成绩进行排名等等. 对于JDK8而言,有三种实现对象比较的方法: 1.在需要比较的对象类中覆写Object类的equals()方法: 2.需要比较的类继承Comparable接口,然后在其类内部实现compareTo()方法: 3.抛去需要被比较的类,在其外部自定义一个单独的对象比较器,继

Java_Comparable,Comparator两接口区别

Comparable和Comparator的区别 根本区别 1.Comparable是一个内比较器,Comparator是一个外比较器 封装的包不同 java.util.Comparator java.lang.Comparable 调用方式不同: Comparable:实体类实现该接口,一个实体类调用compareTo方法与另一个实体类对象进行比较,obj.compareTo(obj); Comparator:调用实现类的compare(obj,obj)方法,进行比较 Comparable 的

Java 中 Comparable 和 Comparator 比较

本文,先介绍Comparable 和Comparator两个接口,以及它们的差异:接着,通过示例,对它们的使用方法进行说明. Comparable 简介 Comparable 是排序接口. 若一个类实现了Comparable接口,就意味着"该类支持排序".  即然实现Comparable接口的类支持排序,假设现在存在"实现Comparable接口的类的对象的List列表(或数组)",则该List列表(或数组)可以通过 Collections.sort(或 Array

Java 中 Comparable 和 Comparator 比较(转)

转自http://www.cnblogs.com/skywang12345/p/3324788.html 本文,先介绍Comparable 和Comparator两个接口,以及它们的差异:接着,通过示例,对它们的使用方法进行说明. Comparable 简介 Comparable 是排序接口. 若一个类实现了Comparable接口,就意味着“该类支持排序”.  即然实现Comparable接口的类支持排序,假设现在存在“实现Comparable接口的类的对象的List列表(或数组)”,则该Li

Comparator 和 Comparable

Comparable 简介 Comparable 是排序接口. 若一个类实现了Comparable接口,就意味着“该类支持排序”.  即然实现Comparable接口的类支持排序,假设现在存在“实现Comparable接口的类的对象的List列表(或数组)”,则该List列表(或数组)可以通过 Collections.sort(或 Arrays.sort)进行排序. 此外,“实现Comparable接口的类的对象”可以用作“有序映射(如TreeMap)”中的键或“有序集合(TreeSet)”中的

Java对象比较器对泛型List进行排序-Demo

针对形如:字段1 字段2 字段3 字段n 1 hello 26 7891 world 89 5562 what 55 4562 the 85 452 fuck 55 995 haha 98 455 以上类型的查询数据结果,需要对 字段3 进行求和分组(在SQL查询无法一次性完成的情况下,通常采用Java分组排序),大概思路如下: 1.在Bean中添加相关的分组标记字段,对求和或者其它统计的结果进行插入分组标记,下面demo中为bigIdOrder标记 2.对完成标记的List进行标记的补全 3.