容器<一>

来源:互联网 发布:iphone改铃声软件 编辑:程序博客网 时间:2024/06/05 11:34

Collection 接口定义了存取一组对象的方法,其子接口Set和List分别定义了储存方式。

Set中的数据对象没有顺序并且不可以重复。

List的数据对象有顺序并且可以重复。

容器类对象在调用renove,contains等方法时需要比较对象是否相等,这会涉及到对象类型的equals方法和hashCode方法。对于自定义的类型,需要重写equals和hashCode方法以实现自定义的对象相等规则。

例如:public boolean equals(object   obj) {

if(obj  instanceof  Name)  {

Name  name = (Name)   obj;

return  (firstName.equals(name.firstName))&&(lastName.equals.lastName);

}


return    super.equals(obj);

}


public  int  hashCode()   {

return   firstName;

}


注意:相等的对象应具有相等的hashCodes。


Iterator  接口

所有实现了Collection接口的容器类都有一个iterator方法用以返回一个实现Iterator接口的对象。Iterator对象称为迭代器用以用以方便实现对容器内元素的遍历操作。而remove方法是Iterator对象在迭代过程中删除元素唯一的安全方法。

例如:

...........

Collection  c= new HashSet();

c.add(new Name("eeee1","1111");

c.add(new Name("f1","11");

c.add(new Name("eee1","1111");

for(Iterator  i = c.iterator();i.hashNext();)  {

Name name = (Name) i.next();

if(name.getFirstName().length<3)  {

i.remove();

}

}

System.out.println((c);


Set  接口

Set接口是Collection的子接口,Set接口没有提供额外的方法,但实现Set容器类中的元素是没有顺序并且不可以重复的。Set容器我们可以把它看作数学中"集合"的概念来理解。

例如:

public static void  main (String[]  args)  {

Set  s1 = new  HashSet();

Set  s2 = new  HashSet();

s1.add("a");  s1.add("b");   s1.add("c");

s2.add("d");s2.add("a"); s2.add("b");

Set sn = new HashSet(s1) ; //把s1中的所有元素全部拷贝到sn中;

sn.retainAll(s2);//求sn与s2的交集;

Set su = new HashSet(s1);

su.addAll(s2); //把s2中所有的元素添加到su中;

System.out.println(sn);

System.out.println(su);

}


原创粉丝点击