collection__Interface【001】

[code="java"]马士兵 ___第七章__容器 学习笔记[/code]
[code]

package com.testcollection;
import java.util.ArrayList;
import java.util.Collection ;

//collection 接口的测试
//练习遍历容器 Iterator
public class TestCollection {
public static void main(String args[]) {
// 接口引用指向具体实现类的对象,为实现多态打下了坚实的基础
// 我们可以将new ArrayList()改成new LinkedList()等等,而不需要改动该程序中的其他部分
// 极大地提高了可扩充性,多态的作用也明显表现了出来
Collection c = new ArrayList() ;
c.add("hello") ;
c.add(new Integer(100)) ;
c.add(new Name("f1","l1")) ;
c.add(new Name("f2","22")) ;
// c.remove("hello") ;

// Iterator i = c.iterator();
// while(i.hasNext()) {
// Name n = (Name)i.next() ;
// System.out.println(n.getFirstName()) ;
// }
System.out.println(c.size()) ;

// 这3个类(String、Name、Integer)都已经重写了Object类的toString方法
// 打印接口引用c,实际上是分别调用这个接口中各个对象的toString方法
System.out.println(c) ;
System.out.println("下面测试remove") ;
System.out.println(c.remove("hello")) ; //true
System.out.println(c.remove(new Integer(100))) ;//true
System.out.println(c.remove(new Name("f1","l1"))) ; //false 当Name的类中没有覆写equals方法时为FALSE
//上面为false 的原因:此处新new 出来的对象,删除时比较的是equals方法,而Name类中未重写
//equals方法,而String和Integer 这两个类已经实现了equals方法

}

}
class Name{
private String firstName, secondName ;
Name(String firstName, String secondName) {
this.firstName = firstName ;
this.secondName = secondName ;
}
public String toString(){
return firstName + " " + secondName ;
}
public String getFirstName() {
return firstName ;
}
public String getSecondName() {
return secondName;
}
public boolean equals (Object obj) {
if(obj instanceof Name) {
Name n = (Name) obj ;
//比较这两个对象的内容是否一致
if (this.firstName.equals(n.firstName)
&& this.secondName.equals(n.secondName))
return true;
else
return false;
}else {
//交给Name的父类去处理(其父类是object类,比较equals就相当于还是比较=)
return super.equals(obj) ;
}
}
public int hashcode() {
return this.firstName.hashCode() ;
}
}
[/code]
[code]
list :有序可重复;

set: 无序不可重复;

重写equals方法,应该也重写hashCode 方法。两个对象若 equals的话,则两个对象的hascode 相等。

hashCode 多做索引时使用;
[/code]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值