[软件构造] lab2相关

重写equals

本次实验使用到list的contains和indexOf方法,而indexOf()中使用了equals来进行比较。
由于我们要对自定义的Edge类进行indexOf,所以需要在Edge重写equals。
网上搜素了一下,重新equals的主要构成如下:

  1. 判断对象非空
  2. 校验对象是否是目标实例
  3. 为保证程序鲁棒性,强行做类型转换
  4. 对象中的每个参数做条件说明
    对于这次实验,在Edge重写equals如下
    @Override
    public boolean equals(Object obj) {
        if (obj == null) return false;   //1. 判断对象非空
        if (obj instanceof Edge){        //2. 校验对象是否是目标实例
            Edge e = (Edge)obj;          //3. 强行做类型转换
            return (this.from == e.from) && (this.to == e.to);//4. 对象中的每个参数做条件说明
        }
        return false;
    }

(如果是要改写HashMap、HashSet、HashTable中的equals,似乎同时也要改写hashCode。

list,遍历时删除元素

不能直接使用list.remove

        Iterator<Edge> it = edges.iterator();
        while (it.hasNext()) {
            Edge e = it.next();
            if (e.to() == vertex || e.from() == vertex) it.remove();
        }
原文地址:https://www.cnblogs.com/lsykk/p/14856657.html