`
zhanghw0917
  • 浏览: 185640 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

实现Comparator的比较器

    博客分类:
  • Java
 
阅读更多
 

比较的对象类

 

class GroupInfo {
	public String groupID; // group id or room id

	private int rank; // the position of group after sort

	private double amount; // the amount of all devices in this room or group

	private String name; // room's name

	private int bitMapResoureceId;

	public GroupInfo(String gID, Amst amst) {
		groupID = gID;
		if (amst != null) {
			name = amst.getGmst_description();
		}
	}

	public double addAmount(Amst amst) {
		if (amst != null) {
			amount = amount + amst.getAmeas_value();
		}
		return amount;
	}

	public String getName() {
		return name;
	}

	public int getRank() {
		return rank;
	}

	public void setRank(int rank) {
		this.rank = rank;
	}

	public double getAmount() {
		return amount;
	}

	public int getBitMapResoureceId() {
		return bitMapResoureceId;
	}

	public void setBitMapResoureceId(int bitMapResoureceId) {
		this.bitMapResoureceId = bitMapResoureceId;
	}
}

 

排序的方法:

 public List<GroupInfo> sortGroupInfo(List<GroupInfo> gilist) {
        Collections.sort(gilist, new GIComparator(GIComparator.SORT_TYPE_AMOUNT));
        int size = gilist.size();
        if (size > MARK_DIGIT){ // if the list size greater than MARK_DIGIT 
            List<GroupInfo> gilist_h = (gilist.subList(0, MARK_DIGIT));
            List<GroupInfo> gilist_t= (gilist.subList(MARK_DIGIT, size));
            Collections.sort(gilist_t, new GIComparator(GIComparator.SORT_TYPE_GROUPID));
//            gilist.clear();  //此处不能将gilist 清空,sublist方法只是返回的视图,其实和父list使用的是同一块内存区域
            List<GroupInfo> result_list = new ArrayList<GroupInfo>();
            for (GroupInfo gi : gilist_h){
                result_list.add(gi);
            }
            for (GroupInfo gi : gilist_t){
                result_list.add(gi);
            }
            gilist = result_list ;
            
        }
        return gilist;

    }

 

 

实现Comparator接口的类

 

class GIComparator implements Comparator<GroupInfo> {
    public static final int SORT_TYPE_AMOUNT = 1 ; // sort by  GroupInfo.amount 
    public static final int SORT_TYPE_GROUPID = 2 ; // sort by  GroupInfo.groupID
 
    private int sort_type ; // the list sort type 
    public GIComparator(int type){
        sort_type = type ;
    }
    
    @Override
    public int compare(GroupInfo arg0, GroupInfo arg1) {
        double amount0 = arg0.getAmount();
        double amount1 = arg1.getAmount();

        String groupID0 = arg0.groupID;
        String groupID1 = arg1.groupID;

        int result = 0;
        
        switch (sort_type){
            default :
            case SORT_TYPE_AMOUNT : //sort by amount and group id
                double tmpd = amount0 - amount1;
                result = (tmpd != 0 ?(tmpd > 0 ? -1 : 1):groupID0.compareTo(groupID1) );      
                break ;
            case SORT_TYPE_GROUPID : // sort by group id
                result = groupID0.compareTo(groupID1);
                break ;

        }
        
        return result;
    }

 

 

 

分享到:
评论

相关推荐

    比较器Comparator简单用法

    在给定的"比较器Comparator简单用法"主题中,我们将深入探讨如何使用`Comparator`以及Apache Commons Lang库中的相关方法。 首先,`Comparator`接口位于`java.util`包下,它包含一个方法`compare(T o1, T o2)`,...

    hysteresis-comparator.rar_PSIM中比较器_PSIM中的比较器_PSIM比较器_PSIM滞环_psim

    PSIM中滞环控制器,环宽、频率、占空比等等可以自己设定。

    Java Comparator比较器实例解析

    Java Comparator比较器实例解析 Java Comparator是一种强大的比较器接口,通过实现Comparator接口,可以自定义比较规则,实现对对象的排序和比较。本文将详细介绍Java Comparator比较器实例解析,通过示例代码介绍...

    程序实现时间排序Comparator

    通过实现`Comparator`接口,可以定义一个比较器,用于比较两个对象并确定它们之间的顺序关系。 ### 2. 代码示例分析 在提供的代码中,我们看到了一个具体的`Comparator`实现——`ComparatorObject`类。这个类被...

    fpga通过vivado实现比较器

    在本文中,我们将深入探讨如何使用Xilinx的Vivado工具在FPGA(Field Programmable Gate Array)上实现一个比较器。FPGA是一种可编程逻辑器件,它允许开发者根据需求自定义硬件逻辑,广泛应用于数字信号处理、图像...

    JAVA 比较器实例

    Java中的比较器(Comparator)是实现自定义排序的关键工具,它允许我们按照特定逻辑对对象进行排序,而不仅仅是依赖于类的自然顺序。在实际开发中,比较器有着广泛的应用,比如在数据处理、列表排序、集合筛选等方面...

    比较器_比较器vhdl_比较器_

    总结来说,通过学习和理解这个 VHDL 实现的比较器,你可以掌握数字系统设计的基本原理,了解如何使用 VHDL 描述和实现逻辑功能,并进一步理解 FPGA 的编程流程。这对于数字电子、嵌入式系统或者集成电路设计的学习者...

    quartus18.0编译仿真的四位比较器

    本文将详细介绍如何利用Quartus 18.0进行四位比较器的设计与仿真。 四位比较器是一种数字逻辑电路,它的主要功能是对比两个四位二进制数的大小。在Quartus 18.0中,我们可以用VHDL或Verilog等硬件描述语言来编写...

    List对象集合的排序:比较器Comparator(简单例子)

    `Comparator`是一个可以比较两个对象的类,它提供了一种方式来定义自定义的比较规则,从而实现灵活的排序逻辑。 `Comparator`接口位于`java.util`包中,它包含了一个方法`compare(T o1, T o2)`,这个方法需要比较两...

    对比Java中的Comparable排序接口和Comparator比较器接口

    Comparator是一个比较器接口,它提供了一种在类本身不支持排序的情况下控制对象次序的方式。通过实现Comparator接口,你可以创建一个独立于原始类的比较逻辑,这使得排序更灵活。Comparator接口包含两个方法:`...

    Comparator 排序器

    ### Comparator 排序器 #### 简介 在Java编程语言中,`Comparator`接口是一种非常实用且灵活的工具,用于控制对象的排序方式。它允许开发人员自定义对象的比较逻辑,从而实现对集合(如`List`)中的元素进行排序。...

    DynamicComparator:Java 动态比较器

    在Java编程语言中,`DynamicComparator`是一种实现比较器(Comparator)的方式,它允许在运行时根据特定条件来比较对象。这种技术对于处理多种比较逻辑或者需要灵活改变比较规则的场景非常有用。本文将深入探讨Java...

    MSP430比较器讲解.pdf

    在MSP430的众多功能模块中,比较器(Comparator)是一种重要的组成部分,用于比较两个电压信号的大小,输出高电平或低电平,从而实现数字信号的转换。 1. 比较器的工作原理: 比较器的基本工作模式是将输入的两个...

    用C#写的一个比较器

    在编程领域,比较器(Comparator)是一个非常重要的概念,它主要用于自定义对象的排序规则。在C#中,我们可以创建自己的比较器类来实现特定类型的比较逻辑。本实例将深入探讨如何使用C#编写一个比较器,以及在实际...

    Comparator:比较器Java

    在标题"Comparator:比较器Java"中提到的Comparator,是Java Collections Framework的一部分,主要用于对集合中的元素进行定制化排序。这个接口定义了一个方法compare(),通过实现这个方法,我们可以指定如何比较两个...

    Java中Comparable和Comparator 2种实现方式学习

    总的来说,`Comparable`和`Comparator`都是实现对象比较和排序的重要工具。`Comparable`适用于类自身需要具备比较能力的情况,而`Comparator`则更适合于外部实体根据特定需求进行比较的场景。两者结合使用可以提供极...

    模拟比较器(ICC)

    在电子设计领域,模拟比较器(Comparator)是一种重要的电路组件,用于比较两个电压信号的大小。在本主题中,我们将深入探讨如何在基于AVR mega16微控制器的系统中应用模拟比较器(ICC,也称为内部比较器)。AVR ...

    verilog4位比较器

    下面我们将深入探讨4位比较器的工作原理,以及如何用Verilog进行实现。 首先,4位比较器可以比较两个4位的二进制数,例如0011和1100。它将产生一个结果信号,指示这两个数哪个较大或是否相等。通常,4位比较器会...

    八位比较器基于VHDL语言编写

    下面我们将深入探讨八位比较器的功能、VHDL语言的基础以及如何用VHDL来实现一个八位比较器。 八位比较器的基本功能是接收两个八位输入数据,然后根据它们的大小关系输出相应的比较结果。这些结果通常表示为以下几种...

    STM32F0培训:12. 比较器.pdf

    - 控制脉宽调制(PWM)信号:结合DAC和定时器的PWM输出,通过比较器实现精确的电流控制。 - 测量电容:利用比较器可以实现电容值的测量。 - 使用光敏电阻进行亮度控制:当环境光线变化时,通过比较器调整输出亮度。 ...

Global site tag (gtag.js) - Google Analytics