Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否检查ArrayList中是否存在字符串?_Java_Arraylist - Fatal编程技术网

Java 是否检查ArrayList中是否存在字符串?

Java 是否检查ArrayList中是否存在字符串?,java,arraylist,Java,Arraylist,我有一根绳子。现在,如何检查字符串是否存在于数组列表中 假设: str="nokia" mobiles[0]="samsung" mobiles[1]="nokia" mobiles[2]="blackberry" 我试过了 Boolean match=false; for(int j = 0 ; j <= 15 ; j++) { match =mobiles[j].compare(str); if(match == true) { break; }

我有一根绳子。现在,如何检查字符串是否存在于数组列表中

假设:

str="nokia"
mobiles[0]="samsung"
mobiles[1]="nokia"
mobiles[2]="blackberry"
我试过了

Boolean match=false;    
for(int j = 0 ; j <= 15 ; j++) {
   match =mobiles[j].compare(str);
   if(match == true) {
     break;
   }
}
布尔匹配=false;

对于(int j=0;j我猜
compare(str)
抛出了一个错误,因为String类没有名为
compare()
的函数

您可以使用
equals()
equalsIgnoreCase()
进行不区分大小写的匹配。还有
compareTo()
compareTignoreCase()
更接近您键入的内容。请注意,compareTo方法返回一个int值

您可以详细阅读方法说明

下面是一个使用
equalsIgnoreCase()
的示例

布尔匹配=false;
对于(int j=0;j
我已将循环的终止条件更改为使用
mobiles
数组的长度。这样,在更改数组长度的情况下,您就不需要更改硬编码值。这也可能会使循环的意图更加清晰


同样正如ZouZou所指出的,编写
match==true
是没有必要的,因为match本身就是一个布尔值。这种情况似乎也不需要使用包装类,所以您可以将
match
声明为基元类型
boolean

compare(str)
正在引发错误,因为String类没有名为
compare()
的函数

您可以使用
equals()
equalsIgnoreCase()
进行不区分大小写的匹配。还有
compareTo()
compareTignoreCase()
更接近您键入的内容。请注意,compareTo方法返回一个int值

您可以详细阅读方法说明

下面是一个使用
equalsIgnoreCase()
的示例

布尔匹配=false;
对于(int j=0;j
我已将循环的终止条件更改为使用
mobiles
数组的长度。这样,在更改数组长度的情况下,您就不需要更改硬编码值。这也可能会使循环的意图更加清晰


正如ZouZou所指出的,编写
match==true
是不必要的,因为match本身就是一个布尔值。这种情况似乎也不需要使用包装类,因此您可以将
match
声明为原始类型
boolean

,而您在问题中提到的
ArrayList
我们的示例显示了一个数组。 如果您确实有一个
ArrayList
,只需使用以下内容:

if(mobiles.contains(str))
{
    //code here
}
if(Arrays.asList(mobiles).contains(str))
{
    //code here
}
如果您有一个数组,您可以在转换为
ArrayList
后使用相同的“contains”,使用类似于:

if(mobiles.contains(str))
{
    //code here
}
if(Arrays.asList(mobiles).contains(str))
{
    //code here
}

在问题中,您提到了一个
ArrayList
,但您的示例显示了一个数组。 如果您确实有一个
ArrayList
,只需使用以下内容:

if(mobiles.contains(str))
{
    //code here
}
if(Arrays.asList(mobiles).contains(str))
{
    //code here
}
如果您有一个数组,您可以在转换为
ArrayList
后使用相同的“contains”,使用类似于:

if(mobiles.contains(str))
{
    //code here
}
if(Arrays.asList(mobiles).contains(str))
{
    //code here
}

我建议不要使用操作来比较字符串,而是直接进行比较:

boolean match = false;
for (j=0; j<=mobiles.length; j++) {
    if (mobiles[j].equals(str)) {
        match=true; break;
    }
}
布尔匹配=false;

对于(j=0;j我建议不要使用操作来比较字符串,而是直接进行比较:

boolean match = false;
for (j=0; j<=mobiles.length; j++) {
    if (mobiles[j].equals(str)) {
        match=true; break;
    }
}
布尔匹配=false;
对于(j=0;j试一下:

 match =mobiles[j].equalsIgnoreCase(str);
equalsIgnoreCase
将此字符串与另一个字符串进行比较,忽略大小写注意事项。如果两个字符串长度相同,则忽略大小写视为相等,并且忽略大小写,两个字符串中的对应字符相等。

尝试:

 match =mobiles[j].equalsIgnoreCase(str);
equalsIgnoreCase
将此字符串与另一个字符串进行比较,忽略大小写注意事项。如果两个字符串长度相同,则忽略大小写视为相等,并且忽略大小写,两个字符串中的对应字符相等。

我会将的方法与其方法结合使用

我会将的方法与它的方法结合使用


使用
match=mobiles[j].equals(str);
这看起来像
字符串
数组,而不是
列表
。当然你可以比“显示错误”更具体一些?什么错误?做什么?equals检查字符串数组中是否存在字符串?这是不可能的错误。如果
mobiles
手机[]
,则不能将字符串放入其中。请使用
match=mobiles[j]。equals(str);
看起来像
字符串的数组,而不是
列表。当然,您可以比“显示错误”更具体?什么错误?Do.equals检查字符串数组中是否存在字符串?该错误是不可能的。如果
mobiles
Phones[]
,则无法将字符串放入其中。为什么要使用
=
来比较两个字符串?使用
equals()
,以比较字符串值。如果我是你,我会删除或修复此答案,以避免进一步向下votes@Magnus查看peeskillet在其评论中发布的链接。它解释了原因。它确实与“=”一起工作只要字符串声明为常量(如问题代码段中所述)。但只要您使用
新字符串(“诺基亚”)
,它就不会出现。因此,最好使用
equals()
,因为它总是有效的。为什么要使用
=
来比较两个字符串?使用
equals()
,以比较字符串值。如果我是你,我会删除或修复此答案,以避免进一步向下votes@Magnus查看peeskillet在其评论中发布的链接。它解释了原因。它确实与“=”一起工作只要字符串声明为常量(如问题代码段中所述)。但不会在使用
新字符串(“诺基亚”)
时立即声明。因此,最好使用