检查字符串是否在Arraylist中

如何检查我Input String是否在我的体内ArrayList?


我是这样做的。但是它总是显示出来的"not equal"。我1以Althoug为例:


public class Main {

    public static void main(String[] args) {

        String Input = JOptionPane.showInputDialog("Input:");


        ArrayList<String> list = new ArrayList<>();


        list.add("1");

        list.add("2");

        list.add("3");

        list.add("4");


        if (Input.equals(list)) {

            JOptionPane.showMessageDialog(null, "equals");

        } else {

            JOptionPane.showMessageDialog(null, "not equal");

        }

    }

}


慕少森
浏览 312回答 2
2回答

胡子哥哥

解释你写了if&nbsp;(Input.equals(list))&nbsp;{&nbsp;...&nbsp;}与Input是String和list一个ArrayList。但是,String#equals(documentation)方法比较两个Strings是否具有相同的字符(如"hello".equals("hello")),而不是比较参数列表是否包含您在其上调用了该方法的元素。引用其文档:将此字符串与指定对象进行比较。结果是,true当且仅当参数不是,null并且是一个String表示与此对象相同字符序列的对象。解决方案您实际要使用的是List#contains(文档):返回true此列表是否包含指定的元素。更正式地讲,true当且仅当此列表包含至少一个e诸如此类的元素时,才返回Objects.equals(o, e)。因此,代码可能如下所示:if&nbsp;(list.contains(Input))&nbsp;{&nbsp;...&nbsp;}命名约定请注意命名约定。变量名称应始终位于camelCase中,input而不是Input。方法名称相同。仅类名称用PascalCase编写。常量(static final)用大写SNAKE_CASE编写。

holdtom

如果要检查确实List<T>包含T item您应该yourList.contains(T item)在代码中使用的代码,则使用的item.equals(object)是完全不同的代码。简而言之,equals()它检查两个对象是否都存储在相同的内存地址中。尽管对于某些默认类,此方法将被覆盖并以不同的方式起作用,但Stringclass是一个很好的例子。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java