类型相同是最基本的也是最重要的判断相等的条件

package Juicer;

import java.util.Scanner;

public class Juicer {  //榨汁机类
    public String squeezeJuice(){  //选择把什么水果榨成汁
        System.out.println("您想用什么水果榨果汁?");
        Scanner input =new Scanner(System.in);
        String name =input.next();  //输入选择的水果
        return name;
    }
}

 

 

package Juicer;

import java.util.ArrayList;
import java.util.Scanner;

public class Juicer_fruit {  //水果类
    String name;
    public ArrayList<String> addFruit(ArrayList<String> fruit){  //
        System.out.println("您拥有多少种水果?");
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();  //输入拥有多少种水果
        for(int i=1;i<=n;i++){  //遍历输入数组
            System.out.println("请添加第"+i+"种水果");
            name = input.next();
            fruit.add(name);
        }
        return fruit;  //返回数组类型
    }
}

 

 

package Juicer;

import java.util.ArrayList;

public class Juicerjudge {  //判断方法类
    public void judge() {
        ArrayList<String> fruit = new ArrayList<String>();  //创建一个数组
        Juicer_fruit fru1 = new Juicer_fruit();  //创建一个水果类的对象
        fru1.addFruit(fruit);  //调用水果类中建造拥有水果种类的方法
        Juicer jui1 = new Juicer();  // 创建一个榨汁机类的对象
        jui1.squeezeJuice();  //调用选择把水果榨成汁的方法
        for (int i = 0; i <= fruit.size(); i++) {  //遍历判断选择的水果是否存在于数组中
            if (fruit.equals(jui1.squeezeJuice())) {
                System.out.println("你榨了" + fruit.get(i) + "汁");  //若存在则输出榨出的汁
            } else {
                continue;  //跳过单次循环
            }
        }
    }
}

 

 

package Juicer;

public class Juicertest {  //测试类
    public static void main(String[] args){
        Juicerjudge jui1 = new Juicerjudge();  //创建判断方法类对象
        jui1.judge();  //调用该对象的方法
    }
}

 

 

非常幼稚的错误。。。类型不同,无法判断。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 `Set<自定义>` 内部判重通常依赖于两个方法:`hashCode()` 和 `equals()`。 `hashCode()` 方法返回对象的哈希码,它用于确定对象在哈希表中的存储位置。在 `Set` 中,当需要判断两个对象是否相等时,首先会比较它们的哈希码。如果两个对象的哈希码不同,那么它们被认为是不同的对象,不会进行进一步的比较。因此,重写 `hashCode()` 方法是非常重要的。 `equals()` 方法用于比较两个对象是否相等。在 `Set` 中,当两个对象的哈希码相同(即可能是同一个存储位置),会进一步调用 `equals()` 方法来比较它们的实际内容。如果 `equals()` 方法返回 `true`,则判定这两个对象是相等的,重复元素将不会被添加到 `Set` 中。因此,也需要正确地重写 `equals()` 方法。 要确保 `Set<自定义>` 内部能够正确判重,需要满足以下条件: 1. 重写 `hashCode()` 方法:确保相等的对象具有相同的哈希码。 2. 重写 `equals()` 方法:确保相等的对象返回 `true`。 同时,还应该遵循以下约定: 1. 如果两个对象相等(即 `equals()` 返回 `true`),则它们的哈希码必须相等。 2. 如果两个对象的哈希码相等,它们并不一定相等(即 `equals()` 返回 `false`),这种情况被称为哈希冲突。 具体的实现方式会根据自定义的属性和业务逻辑而有所不同,一般来说,需要根据对象的某些属性来计算哈希码,并在 `equals()` 方法中比较这些属性的值是否相等。 下面是一个示例,假设自定义为 `Person`,它有一个属性 `id`: ```java public class Person { private int id; // 其他属性和方法... @Override public int hashCode() { return Objects.hash(id); } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null || getClass() != obj.getClass()) { return false; } Person other = (Person) obj; return id == other.id; } } ``` 在上述示例中,我们通过重写 `hashCode()` 方法使用 `Objects.hash()` 方法计算哈希码,使用 `id` 属性进行比较。在 `equals()` 方法中,首先判断两个对象是否为同一个引用,然后判断别是否相同,最后比较 `id` 属性的值。 通过正确实现 `hashCode()` 和 `equals()` 方法,就可以确保 `Set<自定义>` 内部能够正确判重。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值