JavaSE Lecture56
题目:
Person类
package com.master.sysu;
public class Person {
private String name;
private int age;
private int 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;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Person(String name, int age, int id) {
this.age = age;
this.id = id;
this.name = name;
}
}
策略一:
按照ID 升序排ASC
package com.master.sysu;
import java.util.Comparator;
public class Strategy1 implements Comparator<Person> {
@Override
public int compare(Person o1, Person o2) {
return o1.getId()-o2.getId();
}
}
策略二:
按照Name 升序,如果name值一样,则按照ID的升序排
package com.master.sysu;
import java.util.Comparator;
public class strategy3sortByNameAsc implements Comparator<Person> {
@Override
public int compare(Person o1, Person o2) {
if(o1.getName().equals(o2.getName()))
{
return o1.getId()-o2.getId();
}
else
return o1.getName().compareTo(o2.getName());
}
}
测试:
package com.master.sysu;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
public class TestWork {
public static void main(String[] args) {
List<Person> list=new LinkedList<Person>();
list.add(new Person("yan",24,13214007));
list.add(new Person("zhang",22,13214009));
list.add(new Person("zhoupengshan",23,13214010));
list.add(new Person("yan",24,13211007));
list.add(new Person("sunpin",23,13214001));
list.add(new Person("huoziwei",24,13214052));
list.add(new Person("linyibing",23,13214056));
for(Iterator<Person> iter=list.iterator();iter.hasNext();)
{
Person per=iter.next();
System.out.println("name="+per.getName()+" age="+per.getAge()+"number="+per.getId());
}
System.out.println("---------------------------------------------------------------");
Comparator<Person> s1=new Strategy1();
Collections.sort(list,s1); //传入策略s1
for(Iterator<Person> iter=list.iterator();iter.hasNext();)
{
Person per=iter.next();
System.out.println("name="+per.getName()+" age="+per.getAge()+"number="+per.getId());
}
System.out.println("---------------------------------------------------------------");
Strategy2 s2=new Strategy2();
Collections.sort(list,s2); //传入策略s2
for(Iterator<Person> iter=list.iterator();iter.hasNext();)
{
Person per=iter.next();
System.out.println("name="+per.getName()+" age="+per.getAge()+"number="+per.getId());
}
System.out.println("---------------------------------------------------------------");
strategy3sortByNameAsc s3=new strategy3sortByNameAsc();
Collections.sort(list,s3);
for(Iterator<Person> iter=list.iterator();iter.hasNext();)
{
Person per=iter.next();
System.out.println("name="+per.getName()+" age="+per.getAge()+"number="+per.getId());
}
System.out.println("---------------------------------------------------------------");
Strategy4sortByAge s4=new Strategy4sortByAge();
Collections.sort(list,s4);
for(Iterator<Person> iter=list.iterator();iter.hasNext();)
{
Person per=iter.next();
System.out.println("name="+per.getName()+" age="+per.getAge()+"number="+per.getId());
}
}
}
输出结果: