You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何忽略大小写比较ArrayList与String?解决Dog类方法调用报错问题

问题解答

1. 忽略大小写比较ArrayList元素与String的方法

核心思路是根据ArrayList中元素的类型,提取对应的字符串内容后再做忽略大小写匹配:

  • 如果ArrayList存储的是String类型:直接遍历每个元素,调用element.equalsIgnoreCase(targetString)就能完成忽略大小写的比较。
  • 如果是自定义对象(比如你提到的Dog类):需要先获取对象中的字符串属性(比如Dog的name),再拿这个属性和目标字符串做忽略大小写的对比。

2. 解决".equalsIgnoreCase对于Dog类型未定义"的报错

这个报错原因很明确——equalsIgnoreCase是String类的专属方法,Dog类本身并没有定义这个方法,所以你不能直接调用dogs.get(i).equalsIgnoreCase(toFind)。

不用equalsIgnoreCase也能实现忽略大小写查找,不过更合理的方式是先获取Dog的名字属性(毕竟你要找的应该是名字匹配的狗狗吧?),再通过字符串的大小写转换来对比。当然也可以直接用equalsIgnoreCase对比名字和目标字符串,这种方式反而更稳妥。

修改后的代码示例

public static int findDog(String toFind, ArrayList<Dog> dogs) {
    // 统一转换为小写,避免循环中重复转换
    String targetName = toFind.toLowerCase();
    for (int i = 0 ; i < dogs.size() ; i++) {
        Dog currentDog = dogs.get(i);
        // 获取狗的名字并转小写,和目标字符串对比
        if (currentDog.getName().toLowerCase().equals(targetName)) {
            return i;
        }
    }
    return -1;
}

关键补充说明

  • 上面的代码假设Dog类有getName()方法来获取名字属性(既然构造函数里包含name参数,你肯定需要给它加一个Getter方法),如果还没添加,记得在Dog类中补上:
    public class Dog {
        private String name;
        private double age;
        private double weight;
    
        public Dog(String name, double age, double weight) {
            this.name = name;
            this.age = age;
            this.weight = weight;
        }
    
        // 新增获取名字的Getter方法
        public String getName() {
            return name;
        }
    }
    
  • 如果你不想自己转大小写,直接用equalsIgnoreCase对比名字和目标字符串会更简洁可靠(它内部已经处理了多语言大小写转换的边缘情况):
    if (currentDog.getName().equalsIgnoreCase(toFind)) {
        return i;
    }
    

内容的提问来源于stack exchange,提问作者meli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 10:10:55