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