题目
请阅读如下文字,按要求写出对应的代码。
1 )请设计出 person 类,具有姓名、年龄和身高属性。 2 )在 PersonSort 类中,使用集合和泛型存储多个 Person对象
对象:”张三”、”李四”、”王五”、”赵六” 年龄: 18 、 20 、 17 、 23 ; 身高: 178 、 185 、165 、 173 ; 依次存入集合 3 )按照年龄排序升序(从小到大),然后将他们迭代打印出来 4 )按照身高排序降序(从大到小),然后将他们迭代打印出来
[/successbox]
请实现方法:initperson 初始化 Person 数据请实现方法
请实现方法:SortByAge 实现按照年龄排序的功能请实现方法
请实现方法:SortByheight 实现按照身高进行排序的功能请实现方法
请实现方法:PrintList 能够将指定的List输出
输出格式如:张三,18,178
李四,20,185
PersonSort .java
import java.util.*;
public class PersonSort {
public static void main(String[] args) {
PersonSort ps=new PersonSort();
List<Person> list=ps.initPerson();
ps.sortByAge(list);
System.out.println("按照年龄排序后");
ps.printList(list);
ps.sortByHeight(list);
System.out.println("按照身高排序后");
ps.printList(list);
}
public List<Person> initPerson() {
List<Person> list =new ArrayList<Person>();
list.add(new Person("张三",18,178));
list.add(new Person("李四",20,185));
list.add(new Person("王五",17,165));
list.add(new Person("赵六",23,173));
return list;
}
public List<Person> sortByAge(List<Person> list) {
Collections.sort(list,new PersonComparatorByAge());
return list;
}
public List<Person> sortByHeight(List<Person> list) {
Collections.sort(list,new PersonComparatorByHeight());
return list;
}
public void printList(List<Person> list) {
/*for(Person p:list)
{
System.out.println(p);
}*/
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
/*
Iterator a=list.iterator();
while(a.hasNext()){
System.out.println(a.next());
}
*/
}
}
Person.java
public class Person{
public String name;
public int age;
public int high;
public Person(String name,int age,int high){
this.name=name;
this.age=age;
this.high=high;
}
public String toString()
{
return name+"," +age+","+high;
}
}
自定义年龄比较器
import java.util.Comparator;
public class PersonComparatorByAge implements Comparator<Person>{
@Override
public int compare(Person o1, Person o2) {
return (o1.age-o2.age);
}
}
自定义身高比较器
import java.util.Comparator;
public class PersonComparatorByHeight implements Comparator<Person>{
@Override
public int compare(Person o1, Person o2) {
return (o2.high-o1.high);
}
}
输出结果
按照年龄排序后 王五,17,165 张三,18,178 李四,20,185 赵六,23,173
按照身高排序后 李四,20,185 张三,18,178 赵六,23,173 王五,17,165