为了账号安全,请及时绑定邮箱和手机立即绑定

检查字符串是否在Arraylist中

检查字符串是否在Arraylist中

慕少森 2021-05-14 18:22:43
如何检查我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");        }    }}
查看完整描述

2 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

解释

你写了

if (Input.equals(list)) { ... }

InputStringlist一个ArrayList。但是,String#equals(documentation)方法比较两个Strings是否具有相同的字符(如"hello".equals("hello")),而不是比较参数列表是否包含您在其上调用了该方法的元素。引用其文档:

将此字符串与指定对象进行比较。结果是,true当且仅当参数不是,null并且是一个String表示此对象相同字符序列的对象。


解决方案

您实际要使用的是List#contains(文档):

返回true列表是否包含指定的元素。更正式地讲,true当且仅当此列表包含至少一个e诸如此类的元素时,才返回Objects.equals(o, e)

因此,代码可能如下所示:

if (list.contains(Input)) { ... }

命名约定

请注意命名约定。变量名称应始终位于camelCase中input而不是Input。方法名称相同。

仅类名称用PascalCase编写。常量(static final)用大写SNAKE_CASE编写


查看完整回答
反对 回复 2021-05-19
?
holdtom

TA贡献1805条经验 获得超10个赞

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


查看完整回答
反对 回复 2021-05-19
  • 2 回答
  • 0 关注
  • 311 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信