0

我有 ArrayList 包含字符串。我想检查该字符是否存在于数组列表中。我正在使用以下代码。

if(list.toString.contains(char))
{
   // enter code here
}

我可以使用这个 toString() 方法吗?缺点是什么?

4

7 回答 7

3

使用 List.toString() 并搜索它是一个非常糟糕的主意。您的代码应该看起来像这样:

Iterator it = list.getIterator(); 
char searchChar = 'S';

while (it.hasNext())  
{ 
String s = (String) it.next(); 
if ( s.contains(searchChar) ) 
{   
//Found the char! 
} 
}
于 2013-10-17T06:49:52.147 回答
2

尝试这个,

Arrays.toString(inputList.toArray()).contains(searchValue);
于 2013-10-17T06:52:46.470 回答
2

不,您不能继续使用 arraylist.toString(),因为它不会提供 String 中内容的字符串表示形式。

更好的方法是遍历列表并检查,如下所示。

for(String detail:listString){

 if(detail.contains('X')) //replace 'X' with your character
 {
   // do somethng
 }

}    
于 2013-10-17T06:47:04.747 回答
2

list.toString()给你一个列表的字符串表示,因此它包含更多的字符,然后只是连接的列表元素

[stringElement1, stringElement2, ... ]

因此,如果您要查找的字符是、或,,您的方法将不起作用。 请记住,这个字符串表示是特定于实现的。它可能不适用于 ArrayList 以外的其他列表实现[]

我建议写一个方法链接这个:

private boolean listElementContains(List<String> list, String subString){
    for(String element : list){
        if(element.contains(subString)){
            return true;
        }
    }
    return false;
}
于 2013-10-17T06:48:42.980 回答
1

您可以调用toString()任何 Java 对象。List是一个包含(你猜对了)其他对象列表的对象。因此,您还可以调用toString()包含在List. 您应该阅读 Java 中的继承。

在您的特定情况下,您有一个字符串列表。您实际上想要做的是检查列表中的每个字符串,以查看字符串是否包含特定字符。您可能想阅读的主题包括迭代、for 循环和 for each 循环。

于 2013-10-17T06:48:45.793 回答
1

如果我理解正确,您的代码将如下所示:

List<String> strings = new ArrayList<>();
//add strings to list
for (String string : strings) {
    //Look for some character c
    if (string.indexOf(c) >= 0) {
        return true;
    }
}

return false;

关于list.toString,这只是将对象的表示形式返回为字符串;它与内容无关。把它想象成一盒东西上的标签,上面写着“垃圾”。盒子标有垃圾,但你不知道里面有什么。

几乎可以肯定的是,这toString将为内存中的对象返回一个无意义的标签。因此,要了解里面的内容,您需要循环访问如上所示的内容。

于 2013-10-17T06:56:01.487 回答
0
if(list.toString.contains(char))

Stringcontains()方法不会将 char 作为param,而是检查indexOf

您的代码只需稍作修改即可工作。

这里有一个小例子:

     List<String> list= new ArrayList<>();
     list.add("test");
     list.add("test2");
     if (list.toString().indexOf('t') > -1)      // True
     {
         System.out.println("yes there");
     }

笔记:

作为一种解决方法,创建一个char 数组并将您的 char 添加到该数组中,然后使用 contains 方法。

于 2013-10-17T06:51:09.793 回答