您的位置:首页 > 其它

题目及解答:策略模式+泛型(对Person类按姓名、id、年龄正序、倒序排序)

2014-03-10 16:16 465 查看
题目要求:
加入有若干个Person类对象存在一个List当中,对它们进行排序,分别按照名字、年龄、id号进行排序(要有正序和倒序两种方式)。加入年龄或者姓名重复,按照id号的正序进行排序。要求使用策略模式和泛型进行。


程序如下:

1.Person类定义

package strategy.demo;

import java.util.*;

public class Person 

{
private String name;
private int age;
private int id;

public Person(int id, String name, int age)
{
this.id = id;
this.name = name;
this.age = age;
}

public void setId(int id)
{
this.id = id;
}
public int getId()
{
return this.id;
}
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return this.name;
}
public void setAge(int age)
{
this.age = age;
}
public int getAge()
{
return this.age;
}
public String say()
{
return "学号:"+this.id +", 姓名:"+this.name+ ", 年龄:"+this.age;
}

}

[b]2.按照姓名排序
[/b]

①正序

package strategy.demo;

import java.util.*;

public class  NameUpSort implements Strategy

{
public void sort(List<Person> list)
{

Collections.sort(list, new MyComparator6());
}

}

class MyComparator6 implements Comparator<Person>

{
public int compare(Person p1, Person p2)
{
if((p2.getName()).equals(p1.getName()))
{
return p1.getId() - p2.getId();
}
return (p1.getName()).compareTo(p2.getName());
}

}

[b]②倒序
[/b]

package strategy.demo;

import java.util.*;

public class  NameDownSort implements Strategy

{
public void sort(List<Person> list)
{

Collections.sort(list, new MyComparator5());
}

}

class MyComparator5 implements Comparator<Person>

{
public int compare(Person p1, Person p2)
{
if((p2.getName()).equals(p1.getName()))
{
return p1.getId() - p2.getId();
}
return (p2.getName()).compareTo(p1.getName());
}

}

3.按照id排序

①正序

package strategy.demo;

import java.util.*;

public class  IdUpSort implements Strategy

{
public void sort(List<Person> list)
{
Collections.sort(list, new MyComparator4());
}

}

class MyComparator4 implements Comparator<Person>

{
public int compare(Person p1, Person p2)
{
return p1.getId() - p2.getId();
}

}

②倒序
package strategy.demo;

import java.util.*;

public class  IdDownSort implements Strategy

{
public void sort(List<Person> list)
{

Collections.sort(list, new MyComparator3());
}

}

class MyComparator3 implements
4000
Comparator<Person>

{
public int compare(Person p1, Person p2)
{
return p2.getId() - p1.getId();
}

}



4.按照年龄排序

①正序

package strategy.demo;

import java.util.*;

public class  AgeUpSort implements Strategy

{
public void sort(List<Person> list)
{

Collections.sort(list, new MyComparator2());
}

}

class MyComparator2 implements Comparator<Person>

{
public int compare(Person p1, Person p2)
{
if(p2.getAge() == p1.getAge())
{
return p1.getId() - p2.getId();
}
return p1.getAge() - p2.getAge();
}

}

②倒序

package strategy.demo;

import java.util.*;

public class  AgeDownSort implements Strategy

{
public void sort(List<Person> list)
{

Collections.sort(list, new MyComparator1());
}

}

class MyComparator1 implements Comparator<Person>

{
public int compare(Person p1, Person p2)
{
if(p2.getAge() == p1.getAge())
{
return p1.getId() - p2.getId();
}
return p2.getAge() - p1.getAge();
}

}

5.Strategy接口定义

package strategy.demo;

import java.util.*;

interface Strategy 

{
public void sort(List<Person> list);

}

6.Client类定义

package strategy.demo;

import java.util.*;

public class Client 

{
public static void main(String[] args) 
{

List<Person> ls = new ArrayList<Person>();
ls.add(new Person(1, "zhangsan", 20));

ls.add(new Person(2, "lisi", 21));

ls.add(new Person(3, "wangwu", 25));

ls.add(new Person(4, "zhaoliu", 26));

ls.add(new Person(5, "chenqi", 28));

ls.add(new Person(6, "dongba", 10));

ls.add(new Person(7, "zhansan", 15));

 ls.add(new Person(8, "liujiu", 26)); 

System.out.println("-----------按姓名升序排序-----------");
Strategy str1 = new NameUpSort();
str1.sort(ls);
Client.print(ls);
System.out.println("-----------按姓名降序排序-----------");
Strategy str2 = new NameDownSort();
str2.sort(ls);
Client.print(ls);
System.out.println("-----------按id升序排序-----------");
Strategy str3 = new IdUpSort();
str3.sort(ls);
Client.print(ls);
System.out.println("-----------按id降序排序-----------");
Strategy str4 = new IdDownSort();
str4.sort(ls);
Client.print(ls);
System.out.println("-----------按年龄升序排序-----------");
Strategy str5 = new AgeUpSort();
str5.sort(ls);
Client.print(ls);
System.out.println("-----------按年龄降序排序-----------");
Strategy str6 = new AgeDownSort();
str6.sort(ls);
Client.print(ls);

}
public static void print(List<Person> ls)
{
for(int i = 0; i< ls.size(); i++)
{
Person p = ls.get(i);
System.out.println(p.say());
}
}

}

编译时:javac -d . *.java
执行时:java strategy.demo.Client

结果:




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐