Colletion 接口下面有 Set 、List两个常见接口
Set下有实现了它的实现类 HashSet,TreeSet
List下有实现了他的实现类ArrayList,LinkedList
Map是和Collection并列的接口,存放的是(key,value)
Colletions是 Sun帮我们做的用于排序、查找的工具类,其中为静态方法。’
Set集合的数据对象没有顺序(取出时不能按照存入的顺序),并且不能重复。
List集合的数据对象有顺序(取出的顺序和存入的顺序一致),并且可以重复。
集合中不能存储基本数据,因为基本数据存在于栈上(stack),很可能方法执行之后弹栈,因此在集合中是存不住基本元素的。
集合自身重写了toString(),当调用System.out.println(collection),直接打印集合内部内容[a,b,c,d]。
//Object的equals方法什么也没做 等同于==;
class Name{
private String firstName,lastName;
public Name(String firstName,String lastName){
this.firstName = firstName;
this.lastName = lastName;
}
public String getName(){
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);//Object的equals方法什么
也没做 等同于==;
}
public int hashCode(){
return firstName.hashCode();
}
}
public class BasicContainer{
public static void main(){
Collection c = new HashSet();
c.add("hello");
c.add(new Name("f1","f2"));
c.add(new Integer(111));
c.remove("hello");//c: [f1,f2,111]//remove contains 比较用的是equals(),Integer,String 重写了equals(),
比较的是内容是否一样,一样才删掉了。
c.remove(new Integer(111));//c: [f1f2]
System.out.println(c.remove(new Name(f1,f2)));//
[]; // true,重写了equals(),二者比较的是名字,也相等了,所以也删掉了
syso(c);
}
}