黑马程序员技术交流社区
标题:
看到这段代码还是有点收获的
[打印本页]
作者:
luqh
时间:
2015-3-16 20:35
标题:
看到这段代码还是有点收获的
package MAP;
import java.util.HashSet;
import java.util.Set;
public class HashSetDemo {
public static void main(String[] args) {
Set<Node> foods = new HashSet<Node>();
foods.add(new Node(3,4));
foods.add(new Node(5,6));
foods.add(new Node(6,7));
foods.add(new Node(8,9));
System.out.println(foods.size());
System.out.println(foods);//必须有toStrig方法,才成输出自己想要的[3,4]结果
//吃一颗豆子
foods.remove(new Node(8,9));
System.out.println(foods);//必须有toStrig方法,才成输出自己想要的[3,4]结果
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
if(foods.contains(new Node(i,j))){
System.out.println("0");
}else
System.out.println("");
}
}
}
}
class Node{
private int i;
private int j;
public Node(int i,int j){
this.i=i;
this.j=j;
}
复制代码
中间提到 必须要重写equals方法?原因是什么?
作者:
luqh
时间:
2015-3-16 20:41
//必须写equals方法
/*原因:
集合中的contains其实也是用equals来比较的;
默认equals在比较两个对象时,是看他们是否指向同一个地址的,
但有时,我们希望两个对象只要是某些属性相同就认为他们的quals为true。比如:
Node n1 = new Node(3,4);
Node n2 = new Node(3,4);
如果不重写equals的话,他们是不相同的,所以我们要重写equals,判断只要他们的id和名字相同equals就为true
这也正是foods.contains(new Node(3,4)为true的原因。
*/
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2