importjava.util.ArrayList;importjava.util.Collections;importjava.util.Comparator;//comparator、comparable的用法(按照要求将map集合的键值对进行顺序输出)
importjava.util.List;public classTest
{public static voidsop(T t)
{
System.out.println(t);
}public static void main(String args[]) throwsException
{//创建一个map集合,用来存储数据 <>表示接收的是泛型,即指定的类型
List list = new ArrayList();//往集合添加数据
list.add(new Person("czhangsan1", "11", "beijing"));
list.add(new Person("zhangsan5", "15", "nanjing"));
list.add(new Person("azhangsan5", "10", "shanghai"));
list.add(new Person("zhangsan2", "20", "haierbing"));
list.add(new Person("bzhangsan2", "20", "beijing"));
list.add(new Person("zhangsan3", "12", "shanghai"));
list.add(new Person("zhangsan4", "19", "changchun"));
list.add(new Person("zhangsan4", "10", "changchun"));
list.add(new Person("zhangsan4", "10", "zhengzhou"));//将map集合转换为set集合,因为map集合没有迭代器 ,而set集合有
Collections.sort(list);
System.out.println("按年龄排序:");for(Person person : list)
{
System.out.println(person.toString());
}
Collections.sort(list,newMyCompare());
System.out.println("按姓名排序:");for(Person person : list)
{
System.out.println(person.toString());
}
}
}class Person implements Comparable//使Person的属性具有比较性
{privateString name;privateString age;privateString address;public Person(String name, String age, String address)//初始化
{this.name =name;this.age =age;this.address =address;
}publicString getName()
{returnname;
}public voidsetName(String name)
{this.name =name;
}publicString getAge()
{returnage;
}public voidsetAge(String age)
{this.age =age;
}publicString getAddress()
{returnaddress;
}public voidsetAddress(String address)
{this.address =address;
}
@OverridepublicString toString()
{return "姓名:" + name + ", 年龄:" + age + ", 地址:" +address;
}//按年龄大小排序规则
@Overridepublic intcompareTo(Person o)
{return this.age.compareTo(o.getAge());
}
}//按姓名字典顺序排序
class MyCompare implements Comparator//自定义一个比较器
{
@Overridepublic intcompare(Person o1, Person o2)
{returno1.getName().compareTo(o2.getName());
}
}//注意:上面的两种形式都实现了比较,任选其中一种就可以。要么实现comparable接口;要么在集合中传入自定义的比较器。