在集合类,容器类里判断两个对象是否相等

在学习java中,经常会在容器类,集合类中判断两个对象是否相等,必须要重写equals()方法以及hashcode()方法(哈希码就像身份证一样,是唯一的)。

如判断两个点是否相等并且去掉相同的元素。

package com.collection;

import java.util.HashSet; 

public class TestSet {
    
    /**
     * param
     */
    public static void main(String[ ] args) {
                 
            //判断两点是否相等,并且去掉相同的点,
            
            Set pointSet = new HashSet();
            Point p1 = new Point(1,1);
            Point p2 = new Point(2,2);
            Point p3 = new Point(1,1);
            Point p4 = new Point(3,3);
            
            pointSet.add(p1);
            pointSet.add(p2);
            pointSet.add(p3);
            pointSet.add(p4);
            
            for (Object o : pointSet) {
                
                Point p = (Point)o;
                
                System.out.println(p.getX() + "," +p.getY());
            }

public class Point {   
    private int x;
    private int y;    
    public Point() {
        super();
        // TODO Auto-generated constructor stub
    }

    public Point(int x, int y) {  
        super();
        this.x = x;
        this.y = y;
    }
        
    public int getX() {
        return x;
    }
    public void setX(int x) {
        this.x = x;
    }
    public int getY() {
        return y;
    }
    public void setY(int y) {
        this.y = y;
    }

    @Override
    public boolean equals(Object obj) {               //调用equals方法


        // TODO Auto-generated method stub
        
        System.out.println("......");   //测试有没有调用equals()方法
        
        if(obj instanceof Point) {
            
            Point p = (Point)obj;    
            if(x == p.getX() && y == p.getY()) {                
                return true;             
            }else {                
                return false;
                }           
        }else {
            
            return false;
            
        }        
    }
    @Override
    public int hashCode() {
        
        // TODO Auto-generated method stub
        return 15 + 12*x + 5*y;          //这儿是一个因子,可以随便写。
        
     }
        
   }

 }
 

 

 

 

这个方法在java中比较重要,有兴趣的同学可以共同探讨。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值