黑马程序员技术交流社区
标题:
ArrayList 中如何去重:分两种情况(点招考试题目)
[打印本页]
作者:
lockwood
时间:
2015-5-28 19:23
标题:
ArrayList 中如何去重:分两种情况(点招考试题目)
一:如果是字符串对象的话。只用创建新对象。通过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是否相等。
经过三次比较,基本上就穷尽了所有的点,这样就能实现去重的功能。
作者:
lockwood
时间:
2015-5-28 19:26
自己总结的。
作者:
wwb1105
时间:
2015-5-28 19:35
顶一下 对新手帮助很大
作者:
lockwood
时间:
2015-5-29 07:05
wwb1105 发表于 2015-5-28 19:35
顶一下 对新手帮助很大
{:2_31:} 哟哟哟哟哟~~
作者:
!85684009ex
时间:
2015-5-29 07:32
膜拜大神!这个你都想的到!
作者:
qian0217wei
时间:
2015-5-29 08:27
来学习了
作者:
张海旭
时间:
2015-5-29 22:06
顶顶顶:victory:
作者:
tinlen
时间:
2015-5-29 23:32
真详细,不知道到自己被问到这种问题能不能说全
作者:
Amu
时间:
2015-5-29 23:42
新的思路,顶一个
作者:
zlynnb2015
时间:
2015-5-30 00:12
总结得很好啊,大神。
作者:
jiatengde
时间:
2015-5-30 00:46
新人报道,正在努力中
作者:
lockwood
时间:
2015-5-31 18:04
各位加油~~
作者:
Lucus
时间:
2015-5-31 21:55
很详细,总结的很好!
作者:
快乐Anne
时间:
2015-5-31 23:28
学习一下,顶顶
作者:
时光匆匆
时间:
2015-5-31 23:41
点招是考哪些的?都要敲出来么?
作者:
as604049322
时间:
2015-6-1 00:04
作者:
richaled
时间:
2015-6-1 07:58
赞一下,很详细
作者:
2015竹林风
时间:
2015-11-26 13:58
学习了......
作者:
hugh88
时间:
2015-11-26 15:57
大神你好,大神求教,大神再见
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2