容器API_Collection_1
2021-02-08 11:16
标签:public clear 通过 map接口 大小 val 比较 nsa 方式 j2sdk所提供的容器API位于java.util包内。 容器API的类图结构如下图所示: Collection接口一定义了存取一组对象的方法,其子接口Set和List分别定义了存储方式。 Set中的数据对象没有顺序且不可以重复。(通过equals来判断) List中的数据对象有顺序且可以重复。 Map接口定义了存储“键(key)——值(value)映射对”的方法。 Collection接口中所定义的方法: int size();//大小 boolean isEmpty(); void clear();//清除 boolean contains(Object element); boolean add (Object element); boolean remove(Object element); Iterator iterator(); boolean containsAll(Collection c); boolean addAll(Collection c); boolean removeAll(Collection c); boolean retainAll(Collection c);接口的交集 Object [] toArray(); Collection 方法举例 两个对象如果内容一样,Hashcode也必须一样 容器类对象在调用remove、contains等方法时需要比较对象是否相等,这会涉及到对象类型的equals 方法和hashCode方法:对于自定义的类型,需要要重写equals和hashCode方法以实现自定义的对象相等规则。●注意:相等的对象应该具有相等的hash codes。增加Name类的equals和hashCode方法如下: 容器API_Collection_1 标签:public clear 通过 map接口 大小 val 比较 nsa 方式 原文地址:https://www.cnblogs.com/lsswudi/p/11357169.htmlimport java.util.*;
public class Test {
public static void main(String[] args) {
Collection c = new HashSet();
c.add("hello");
c.add(new Name("f1","11"));
c.add(new Integer(100));
c.remove("hello");
c.remove(new Integer(100));
System.out.println(c.remove(new Name("f1","11")));
System.out.println(c);
}
}
class Name {
private String firstName,secondName;
public Name(String firstName,String secondName) {
this.firstName = firstName;
this.secondName = secondName;
}
public String getfirstName() {return firstName;}
public String getsecondName() {return secondName;}
public String toString() {
return firstName+" "+secondName;
}
}
public boolean equals(Object obj) {
if(obj instanceof Name) {
Name name = (Name) obj;//强制转换
return (firstName.equals(name.firstName))&&(secondName.equals(name.secondName));
}
return super.equals(obj);
}
public int hashCode() {
return firstName.hashCode();
}