java策略模式,comparator

     2022-03-13     778

关键词:

package 设计模式.策略模式;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
/**
 * @deprecated 通过实现Comparator接口实现排序(策略模式)
 * 
 * 
 * */
public class Person implements Comparator<Person>{
    private int id;
    private String name;
    private int age;
    public int getId() {
        return id;
    }
    @Override
    public int hashCode() {
        return this.name.hashCode();
    }
    @Override
    public boolean equals(Object obj) {
        Person person=(Person)obj;
        if(this.id==person.getId()){
            if(this.hashCode()==person.hashCode()){
                return true;
            }
        }
        return false;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public int compare(Person o1, Person o2) {
        // TODO Auto-generated method stub
        o1=(Person)o1;
        o2=(Person)o2;
        if(o1.getId()<o2.getId()){
            return -1;
        }else if(o1.getId()==o2.getId()){
            if(o1.getName().compareTo(o2.getName())<0){
                return -1;
            }
            else if(o1.getName().compareTo(o2.getName())>0){
                return 1;
            }else {
                return 0;
            }
        }
        return 1;
    }
    
    
    @Override
    public String toString() {
        return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
    }
    
    public Person() {
        super();
        // TODO Auto-generated constructor stub
    }
    public Person(int id, String name, int age) {
        super();
        this.id = id;
        this.name = name;
        this.age = age;
    }
    
    public static void main(String[] args) {
        Person person1=new Person(1, "张三", 21);
        Person person2=new Person(2, "王五", 33);
        Person person3=new Person(3, "张三", 21);
        Person person4=new Person(3, "王五", 21);
        List<Person> list=new ArrayList<Person>();
        list.add(person1);
        list.add(person2);
        list.add(person3);
        list.add(person4);
        Collections.sort(list, new Person());
        Iterator<Person> iterator=list.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next().toString());
        }
        
    }
    
    
}


本文出自 “matengbing” 博客,请务必保留此出处http://matengbing.blog.51cto.com/11395502/1879008

设计模式行为型模式--策略模式jdk源码分析:comparator(代码片段)

设计模式行为型模式–策略模式(定义、结构、示例、分析)1.策略模式JDK源码分析:ComparatorComparator中的策略模式。在Arrays类中有一个sort()方法,如下:publicclassArrayspublicstatic<T>voidsort(T[]a,Comparator<?super 查看详情

设计模式课程设计模式精讲19-3策略模式源码解析(代码片段)

...1.1    源码解析1(jdk中的应用1)java.util.Comparator(策略类)作为比较器的应用packagejava.util;publicinterfaceComparator<T>intcompare(To1,To2);booleanequals(Objectobj); java.util.ArrayList(策略类应用)packagejava.util;importjava.lang.reflect.*;public... 查看详情

策略模式

策略模式StrategyPattern  在Java的集合框架中,经常需要通过构造方法传入一个比较器Comparator,或者创建比较器传入Collections的静态方法中作为方法参数,进行比较排序等,使用的是策略模式。 策略模式的定义  定义一组... 查看详情

10设计模式策略模式

...作为一种经典的开发实践常常需要我们去深入的理解,而策略模式作为设计模式的一种,使用频率也是相对来说比较高的,在Java中,当我们学习TreeSet集合的时候,就采用了经典的策略模式的思想,本文主要讲解策略模式。概念... 查看详情

策略模式

策略模式其思想就是把一系列的算法封装到具有相同接口的独立的类中,从而使他们可以相互替换。而其最大的特点是使得算法可以在不影响客户端的情况下发生改变,从而实现不同的功能。 举个例子:Java的工具类TreeSet,... 查看详情

comparable与comparator

...,偶尔会迷糊。。。。。comparable与 comparator区别:(策略模式)   一般需要比较或者排序的类,都需要实现comparable,实现comparable就需要去重写compareto方法,一般需要在这个方法里写明具体需要怎么比较,那么问题来了,... 查看详情

策略模式与工厂模式实践(代码片段)

hello,大家好,我是聪聪。文章目录1.介绍2.策略模式结构2.1分支逻辑解释2.2策略模式设计2.3策略模式代码2.3.1通用策略接口及其各策略实现。2.3.2执行上下文信息2.3.3客户端调用2.3.4总结3.常用示例3.1定义一个策略枚举3.2策... 查看详情

java排序问题,comparator接口,求高手

...较,一个是外部程序实现比较的差别而已。用Comparator是策略模式(strategydesignpattern),就是不改变对象自身,而用一个策略对象(strategyobject)来改变它的行为。从操作上 查看详情

策略模式(代码片段)

策略模式简述策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从... 查看详情

设计模式之策略模式(代码片段)

...具体实现创建一个定义活动的接口和实现了该接口的实体策略类。Comparator为策略接口,一个比较器。publicinterfaceComparatorintcompare(Objecto1,Objecto2);CatHe 查看详情

java设计模式---策略模式(案例解析)

策略模式一、概念1、理解策略模式策略模式是一种行为型模式,它将对象和行为分开,将行为定义为一个行为接口和具体行为的实现。策略模式最大的特点是行为的变化,行为之间可以相互替换。每个if判断都可以理解为就是一... 查看详情

java

http://astah.net/comparable接口使用者通过实现compareTo方法来实现自己的排序策略comparable 查看详情

java设计模式—策略模式

  在阎宏博士的《JAVA与模式》一书中开头是这样描述策略(Strategy)模式的:  策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模... 查看详情

comparable(代码片段)

...;目录引入Comparable接口的来龙去脉引入Comparator接口什么是策略模式?使用了策略模式有什么好处?引入大家先考虑一个场景,有一个整形数组,我们希望通过调用一个工具类的排序方法就能对该数组进行排序.请看下面的代码:publicclassS... 查看详情

java设计模式之策略模式

    策略模式属于对象的行为模式,策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换,策略模式让算法独立于使用它的客户而独立变化。策略模式使这些算法在客户端调用它们... 查看详情

java设计模式之策略模式

策略模式     定义了算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户(大话设计模式)。策略模式UML图      策略模式代码   古代的各种计谋都是... 查看详情

java策略模式

策略模式策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。这个模式涉及到三个... 查看详情

java-设计模式-策略模式

策略模式其实就是对各种行为算法的包装,各种不同的行为的算法的分离。属于对象的行为模式。650)this.width=650;"src="http://www.jasongj.com/img/designpattern/strategy/Strategy.png"alt="StrategyPatternClassDiagram"/>策略模式类图,比较简单,没有自己... 查看详情