- import java.util.*; //14--11
- class ArrayListTest2
- {
- public static void main(String[] args)
- {
- ArrayList al = new ArrayList();
- al.add(new Person("lisi01",22));
- al.add(new Person("lisi01",22));
- al.add(new Person("lisi02",242));
- al.add(new Person("lisi03",252));
- al.add(new Person("lisi04",262));
-
- Iterator it=al.iterator();
- while (it.hasNext())
- {
- Person p=(Person)it.next();
- sop(p.getName()+""+p.getAge());
- }
- }
- public static void sop(String a)
- {
- System.out.println(a);
- }
- }
- class Person
- {
- private String name;
- private int age;
- Person(String name,int age)
- {
- this.name=name;
- this.age=age;
- }
- public boolean equals(Object j)
- {
- if(!(j instanceof Person))
- return false;
- Person h=(Person)j;
- return this.name.equals(h.name)&& this.age==h.age;
- }
- public String getName()
- {
- return name;
- }
- public int getAge()
- {
- return age;
- }
- }
复制代码 我想知道为什么在Person中定义的equals方法不需要调用,就会自动运行?如果是在ArrayList添加元素的时候判断的,那么为什么要定义在对象类中,不可以像TreeSet那样定义在构造函数中,或者其他地方吗?鉴于ArrayList没有可以指定排序方法的构造函数,是不是只有在对象类中复写equals方法这一种办法?
还有就是 Iterator it=al.iterator(); 这语句我看着很别扭,也不理解。
“List集合特有的迭代器,ListIterator是Iterator的子接口。” 我该怎么理解这话,在应用上,LIST迭代器和Collection迭代器有什么不同,可以讲讲Iterator和Collection之间的知识穿插结构吗?
这两天看集合把我看晕了啊。。。。
|