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
声明为基元类型booleancompare(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在其评论中发布的链接。它解释了原因。它确实与“=”一起工作只要字符串声明为常量(如问题代码段中所述)。但不会在使用新字符串(“诺基亚”)
时立即声明。因此,最好使用