zoukankan      html  css  js  c++  java
  • 策略模式和自定义排序规则

    一、定义Person类模型

    package cn.lesson8.statary;
    
    public class Person {
    	private int id;
    	private String name;
    	private int age;
    	public int getId() {
    		return id;
    	}
    	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 String toString() {
    		return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
    	}
    	
    	
    }
    

    二、定义接口SortInterface

    package cn.lesson8.statary;
    
    import java.util.List;
    
    public interface SortInterface {
    	public void sort(List<Person> list);
    }
    

    三、实现接口的具体方法UpNameSort

    该方法继承了Comparator接口,实现自定义排序规则。
    package cn.lesson8.statary;
    
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
    
    public class UpNameSort implements SortInterface,Comparator<Person>{
    
    	@Override
    	public int compare(Person o1, Person o2) {
    		int result=o1.getName().compareTo(o2.getName());
    		if(0==result){
    			return o1.getId()-o2.getId();	//如果名字相等,按Id排序
    		}
    		return result;
    	}
    
    	@Override
    	public void sort(List<Person> list) {
    		Collections.sort(list, this); //安装自定义排序规则进行排序,this代表当前的排序规则
    	}
    	
    }
    


    四、调用环境类Environment

    package cn.lesson8.statary;
    
    import java.util.List;
    
    public class Environment {
    	private SortInterface sortInterface;
    	
    	public Environment(SortInterface sortInterface){
    		this.sortInterface=sortInterface;
    	}
    	
    	public Environment(){
    		
    	}
    
    	public void setSortInterface(SortInterface sortInterface) {
    		this.sortInterface = sortInterface;
    	}
    	
    	public void sort(List<Person> list){
    		this.sortInterface.sort(list); //this代表当前对象调用sortInterface对象的sort()方法
    	}
    }
    

    五、测试类Client

    package cn.lesson8.statary;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class Client {
    	public static void main(String[] args){
    		Person p1 = new Person();
    		p1.setName("Tom");
    		p1.setId(1);
    		p1.setAge(20);
    
    		Person p2 = new Person();
    		p2.setName("Tonny");
    		p2.setId(2);
    		p2.setAge(50);
    
    		Person p3 = new Person();
    		p3.setName("Tom");
    		p3.setId(5);
    		p3.setAge(30);
    
    		Person p4 = new Person();
    		p4.setName("ABC");
    		p4.setId(8);
    		p4.setAge(10);
    
    		Person p5 = new Person();
    		p5.setName("Xyz");
    		p5.setId(9);
    		p5.setAge(15);
    		
    		List<Person> list = new ArrayList<Person>();
    		list.add(p1);
    		list.add(p2);
    		list.add(p3);
    		list.add(p4);
    		list.add(p5);
    		
    		Environment env=new Environment();
    		UpNameSort uns=new UpNameSort();
    		env.setSortInterface(uns);
    		env.sort(list);
    		
    		for(int i=0;i<list.size();i++){
    			Person p=list.get(i);
    			System.out.println(p.toString());
    		}
    	}
    }
    





  • 相关阅读:
    [模板] 循环数组的最大子段和
    [最短路][几何][牛客] [国庆集训派对1]-L-New Game
    [洛谷] P1866 编号
    1115 Counting Nodes in a BST (30 分)
    1106 Lowest Price in Supply Chain (25 分)
    1094 The Largest Generation (25 分)
    1090 Highest Price in Supply Chain (25 分)
    树的遍历
    1086 Tree Traversals Again (25 分)
    1079 Total Sales of Supply Chain (25 分 树
  • 原文地址:https://www.cnblogs.com/james1207/p/3266559.html
Copyright © 2011-2022 走看看