import java.util.*;
class Person //定义一个人的类----------->Person类不具有比较性,所以要实现Comparable接口并覆写CompareTo()方法。
{
private String name;
private int age;
Person(String name,int age) //构造函数初始化
{
this.name=name;
this.age=age;
}
public void setName(String name) //定义一个设置人姓名的函数
{
this.name=name;
}
public String getName() //定义一个获取人姓名的函数
{
return name;
}
}
class Student extends Person //定义一个学生类
{
Student(String name,int age)
{
super(name,age);
}
}
class StuCom implements Comparator<Student> //定义一个比较器
{
public int compare(Student s1,Student s2) //复写compare方法
{
return s1.getName().compareTo(s2.getName());
}
}
class FanXingDemo2
{
public static void main(String[] args)
{
ArrayList<Student> st=new ArrayList<Student>(new StuCom()); //ArrayList集合的构造函数中,并没有定义可以将比较器作为参数传入,所以这里不能加比较器。
建一个容器
//向容器添加person对象
st.add(new Student("zhangsan01",20));
st.add(new Student("zhangsan02",21));
st.add(new Student("zhangsan03",22));
st.add(new Student("zhangsan04",23));
st.add(new Student("zhangsan05",24));
st.add(new Student("zhangsan06",25));
print(st); //调用函数输出每个人对象的姓名
}
public static void print(ArrayList<? super Student > st)
{
Iterator<?> it=st.iterator()
while(it.hasNext())
{
System.out.println(it.next().toString());
}
}
}
ArrayList的构造函数: ArrayList()
构造一个初始容量为 10 的空列表。 | ArrayList(Collection<? extends E> c)
构造一个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的。 | ArrayList(int initialCapacity)
构造一个具有指定初始容量的空列表。
如果想对姓名或年龄进行排序,可以使用Collections工具类中的sort()方法,进行自然排序或自定义比较器作为参数传给sort()方法。
还有一点要注意的是,因为你在集合中存储了自定义对象,所以要对这些对象进行比较,还需要实现Comparable接口,并覆写其中的CompareTo()方法,
这样自定义对象才会具有比较性。
|
|