【问题标题】:Java equals or contains method?Java等于还是包含方法?
【发布时间】:2013-05-06 14:51:28
【问题描述】:

我有一个包含以下元素的堆栈(记录):

first   20130512142202
second  20130512142204
third   20130512142206
fourth  20130512142209
fifth   20130512142212

我想检查一个字符串值(比如说“第二个”)是否被引用到堆栈中的其他地方。 所以我尝试了:

while(!Records.empty()) {
    String checkRecord=Records.pop().toString();
    if(checkRecord.equals("second")) {
        System.out.println(checkRecord + " found");
    }

    else {
        System.out.println(checkRecord +" not found");
    }
}

System.out.println("END OF STACK");

Equals 返回 false,这很好,因为“second”与“second (20130512142204)”并不完全相同。所以我需要别的东西,我尝试了contains(),它返回 true,但即使返回 true:

string test = "second  20130512142204";
test.contains(rt);

contains() 是实现我需要的正确选择还是应该尝试不同的方法/修改我的代码? 当且仅当我给出的字符串是堆栈行的一部分时,我才想得到正确的结果。

【问题讨论】:

  • 这两种方法都在做它们应该做的事情。你能详细说明你到底需要什么吗?发布一些示例和预期输出..
  • 你不能用地图代替吗?看起来您的数据结构是一组对。然后您可以轻松访问值/键
  • 是的...这两种方法的作用完全相同。 StartWith 可以是一个选项,但我仍然认为您应该给我更多更好的示例,以便为您提供正确的答案。

标签: java equals contains


【解决方案1】:

如果您对从问题中的堆栈示例中查找 String startsWith "second" 特别感兴趣。使用 "".startsWith() 函数

所以代码是

  while(!Records.empty()){
        String checkRecord=Records.pop().toString();

        //True when the current checkRecord string startsWith "second"
        if(checkRecord.startsWith("second"))
        {

            System.out.println(checkRecord + " found");
        }else{
            System.out.println(checkRecord +" not found");
        }
    }
    System.out.println("END OF STACK");

另外,"".contains() 函数必须和上面的代码完全一样。我不明白为什么它不适合你。

【讨论】:

    猜你喜欢
    • 2021-04-08
    • 2013-03-28
    • 1970-01-01
    • 2014-09-04
    • 2012-02-25
    • 2017-09-05
    • 2018-02-12
    • 2014-12-05
    • 1970-01-01
    相关资源
    最近更新 更多