在java中使用toString()将列表转换为字符串

在java中使用toString()将列表转换为字符串,java,Java,我有ArrayList包含的字符串。我想检查arraylist中是否存在该字符。我正在使用以下代码 if(list.toString.contains(char)) { // enter code here } 我可以使用这个toString方法吗。缺点是什么?不,您不能继续使用arraylist.toString,因为它不会提供字符串中内容的字符串表示形式 更好的方法是迭代列表并检查,如下所示 for(String detail:listString){ if(detail.con

我有ArrayList包含的字符串。我想检查arraylist中是否存在该字符。我正在使用以下代码

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

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

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

更好的方法是迭代列表并检查,如下所示

for(String detail:listString){

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

}    
toString为您提供了列表的字符串表示形式,因此它包含比串联列表元素更多的字符

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

我建议您编写一个链接以下内容的方法:

private boolean listElementContains(List<String> list, String subString){
    for(String element : list){
        if(element.contains(subString)){
            return true;
        }
    }
    return false;
}
您可以在任何Java对象上调用toString。列表是一个对象,其中包含您猜到的其他对象的列表。因此,还可以对列表中包含的每个对象调用toString。您应该阅读Java中的继承


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

使用List.toString并搜索它是一个非常糟糕的主意。您的代码可能如下所示:

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

while (it.hasNext())  
{ 
String s = (String) it.next(); 
if ( s.contains(searchChar) ) 
{   
//Found the char! 
} 
}
字符串的contains方法不会将char作为参数,而是使用indexOf进行检查

您的代码工作正常,只需稍加修改

这里有一个小例子:

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

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

试试这个

Arrays.toString(inputList.toArray()).contains(searchValue);

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

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将为内存中的对象返回一个无意义的标签。因此,要了解其中的内容,您需要循环浏览如上所示的内容。

等等,什么?您正在搜索字符串列表中的字符?你能举一个例子说明你的清单实际包含的内容吗?如果您的意思是试图查看字符串列表是否包含特定字符串,那么您应该遍历该列表,或者在列表上使用indexOf方法。您要检查哪个字符???只有这样才能有所不同嗨,我的列表包含字符串值。例如,我的列表是[L2,L1,0,R1,R2,L4,L3,R4,L6,L5,0,R5,R6,L8],我想检查这个字符串中是否存在“U”。如果list.toString.containsU{/}为So,则列表中包含ABC、DEF、GHI等字符串。您想知道它是否包含字符串DEF吗?或者您想知道它是否包含任何具有字符“B”的字符串。如果要查看它是否包含DEF,则可以执行iflist.indexOfDEF>-1{…}。如果您想查看字符串是否包含特定字符,您应该对字符串s执行以下操作:list{If s.indexOf'B'>-1{…},与这里的许多海报不同,我故意不给你代码,因为这是一个明显的家庭作业问题,你似乎没有投入太多精力。contains方法只不过是indexOf的实现。在java中,默认情况下,它调用indexOf方法,同时调用contains right?是的,完全正确。你的理解是正确的。但不能将字符直接传递给contains方法:@dimancrown如果您看到string类的API,则没有名为contain的方法允许将char作为参数。有一个方法contain允许使用char[],即String。所以你可以做的是,取一个字符数组,把你的字符放进去,然后传递数组。很简单。实际上,考虑一个列表的实现,它的toStand方法每次返回包含u的[L1,R1]的unCuxDeWalist!
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;