java——容器

Collection接口--定义了存取一组对象的方法,
其子接口Set和List分别定义了存储方式。
其中Set中的数据对象没有顺序且不可重复。
List中的数据对象有顺序且可以重复。
注:重复的概念是指两个对象互相的equals。

Map接口定义了存储“键(key)--值(value)”映射对的方法。

图片.png

实现了Collection接口中所定义的方法:
int size()
boolean isEmpty()
void clear();
boolean cantains(object element)
boolean remove(object element)
Iterator iterator()
boolean cotainsAll(Collection c)
boolean addAll(Collection c)
boolean removeAll(Collection c)
boolean retainAll(Collection c)
Object[] toArray();

比较两个对象如果没有重写equals()方法的话,则直接调用父类的equals方法。
一般Object的equals方法是直接比较两个对象的引用是否相等。

容器类对象在 调用remove、contains等方法时需要比较对象是否相等,
这是涉及到对象类型的equals方法和hashCode方法;
对于自定义的类型,需要重写equals和hashCode方法来实现自定义的对象相等的规则。
注意:相等的对象应该具有相等的hashCode。

实现Name对象的equals方法重写。


public class Name {
    String firstName, lastName;
    
    Name(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = 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();
    }
}

关于hashCode和equals的参考:
http://blog.csdn.net/fenglibing/article/details/8905007

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,765评论 18 399
  • package java.util包中的Collection相关接口和类如下图: 仅讨论Java.util包中的常...
    maxwellyue阅读 1,710评论 0 4
  • java笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
    jmychou阅读 1,518评论 0 3
  • ** 1.泛型和类型安全的容器**ArrayList,可以自动扩充大小的数组,add插入对象,get访问对象,si...
    一根烟的弹跳阅读 385评论 0 0
  • 8/7 12:17 晴 除了没人疼,哪里都疼。这是一个段子,但同时也是一种现代人的态度和生活的体现。 不知道是...
    DreamWorld阅读 199评论 0 0