我有 ArrayList 包含字符串。我想检查该字符是否存在于数组列表中。我正在使用以下代码。
if(list.toString.contains(char))
{
// enter code here
}
我可以使用这个 toString() 方法吗?缺点是什么?
我有 ArrayList 包含字符串。我想检查该字符是否存在于数组列表中。我正在使用以下代码。
if(list.toString.contains(char))
{
// enter code here
}
我可以使用这个 toString() 方法吗?缺点是什么?
使用 List.toString() 并搜索它是一个非常糟糕的主意。您的代码应该看起来像这样:
Iterator it = list.getIterator();
char searchChar = 'S';
while (it.hasNext())
{
String s = (String) it.next();
if ( s.contains(searchChar) )
{
//Found the char!
}
}
尝试这个,
Arrays.toString(inputList.toArray()).contains(searchValue);
不,您不能继续使用 arraylist.toString(),因为它不会提供 String 中内容的字符串表示形式。
更好的方法是遍历列表并检查,如下所示。
for(String detail:listString){
if(detail.contains('X')) //replace 'X' with your character
{
// do somethng
}
}
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;
}
您可以调用toString()
任何 Java 对象。List
是一个包含(你猜对了)其他对象列表的对象。因此,您还可以调用toString()
包含在List
. 您应该阅读 Java 中的继承。
在您的特定情况下,您有一个字符串列表。您实际上想要做的是检查列表中的每个字符串,以查看字符串是否包含特定字符。您可能想阅读的主题包括迭代、for 循环和 for each 循环。
如果我理解正确,您的代码将如下所示:
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
将为内存中的对象返回一个无意义的标签。因此,要了解里面的内容,您需要循环访问如上所示的内容。
if(list.toString.contains(char))
String
的contains()
方法不会将 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 方法。