i have an arraylist and I want to check whether the arraylist have a certain string. I found that .contains() can do the trick. But when i run it in a loop to check the word "bot" in an arraylist. The results also include "chatbot" and "robot" as "bot" which is not suppose to be the result that I want. But if I do it without the loop, it work just fine which I dont understand why.
The code:
// Java code to demonstrate the working of
// contains() method in ArrayList of string
// for ArrayList functions
import java.util.ArrayList;
public class test {
public static void main(String[] args)
{
// creating an Empty String ArrayList
ArrayList<String> arr = new ArrayList<String>(4);
ArrayList<String> arr2 = new ArrayList<String>(4);
// using add() to initialize values
arr.add("chatbot");
arr.add("robot");
arr.add("bot");
arr.add("lala");
// use contains() to check if the element
for (int i=0;i<arr.size();i++){
boolean ans = arr.get(i).contains("bot");
if (ans) {System.out.println("1: The list contains bot"); }
else
{System.out.println("1: The list does not contains bot");}
}
System.out.println();
for (String str : arr) {
if (str.toLowerCase().contains("bot")) {
System.out.println("2: The list contains bot");;
}
else
{System.out.println("2: The list does not contains bot");}
}
// use contains() to check if the element
System.out.println();
arr2.add("robot");
boolean ans = arr2.contains("bot");
if (ans)
System.out.println("3: The list contains bot");
else
System.out.println("3: The list does not contains bot");
}
}
The result:
1: The list contains bot
1: The list contains bot
1: The list contains bot
1: The list does not contains bot
2: The list contains bot
2: The list contains bot
2: The list contains bot
2: The list does not contains bot
3: The list does not contains bot
arr2contains an element that is the exact String "bot" (i.e., you're not checking for substrings). Since it has "robot", but doesn't have "bot", it returns false.