Collection接口用于单个元素装入,Map接口用于成对元素装入;
Set接口和List接口继承于Collection,Set存储无序且不可重复的元素,List存储有序且可重复的元素;
接口定义了标准,类具体实现对应标准。
Collection的子类用于存放的元素都是对象类型的(Object及其子类)。如果对象是自定义类的对象,则需要重写equal方法;
当需要用hash做索引时(如HashSet比较两个自定义对象,或Map中),也需要重写hashcode方法。
import java.util.*;
public class BasicContainer {
public static void main(String[] args) {
Collection c = new ArrayList();
c.add("hello");
c.add(new Name("f1","l1"));
c.add(new Integer(100));
c.remove("hello");
c.remove(new Integer(100));
System.out.println
(c.remove(new Name("f1","l1")));
System.out.println(c);
}
}
class Name implements Comparable {
private String firstName,lastName;
public Name(String firstName, String lastName) {
this.firstName = firstName; this.lastName = lastName;
}
public String getFirstName() { return firstName; }
public String getLastName() { return lastName; }
public String toString() { return firstName + " " + lastName; }
public boolean equals(Object obj) {
if (obj instanceof Name) {
Name name = (Name) obj;
return (firstName.equals(name.firstName))
&& (lastName.equals(name.lastName));
}
return super.equals(obj);
}
//public int hashCode() {
// return firstName.hashCode();
//}
public int compareTo(Object o) {
Name n = (Name)o;
int lastCmp =
lastName.compareTo(n.lastName);
return
(lastCmp!=0 ? lastCmp :
firstName.compareTo(n.firstName));
}
}
父类引用(接口引用)指向子类对象应用此处应用较广:
Collection c = new ArrayList();