一:如果是字符串对象的话。只用创建新对象。通过iterator进行遍历。然后将获取的到字符串对象转型为字符换,经过转型后,调用新集合的contains方法对获取到的元素进行判断,如果不存在就把元素存储在新集合中即可。
二:如果是一个(学生)对象,该对象中有很多的属性和方法。如果采用的是contains方法进行比较。那么比较的时候默认比较的是对象的地址值。所以不管怎么比较它们是不可能相等的。这个时候需要看底层的代码。通过底层的代码可知,底层使用了equals方法。因此。我们可以对equals方法进行重写,让底层按照我们自己定义的规则来进行比较。所以,可以在学生类中添加equals方法。 Equals方法中有比较有三部分:
第一部分----提高代码判断的效率: 采用 this == obj 的判断比较。这段代码用于判断传过来的对象是否是同一个对象,如果是同一对象的话,就 返回true。
第二部分----提高代码的健壮性: 采用 !(obj instance of Student) (以Stduent类来举例) 用于判断传过来的对象是否是Student 类的一个对象,如果不是,然后false
第三部分----比较对象的属性值是否相等:首相要比较该对象的属性值,就必须要把传过来的Object 类型的对象转化成为Student 对象的子类。这样才能调用student的属性。属于向下转型代码如下:
Student stu = (Student) obj;
分两种情况
1.比较字符串类型的成员变量: this.name.equals(stu.name) 注意这里的equals 是this.name 这个字符串类象的方法。并不是调用了本方法。
2.比较整数类型的成员变量: this.age == stu.age; 比较两个整数类型的age是否相等。
经过三次比较,基本上就穷尽了所有的点,这样就能实现去重的功能。 |
|