this code shows that contains method is case sensitive. Is there any alternative method or way to make it not case sensitive and thus return true?
Well, in fact the contains() method uses the Object.equals() method. The String.equals() is case-sensitive. For String comparison, there is a String.equalsIgnoreCase() method. You could define your own datatype implementing its own equals() (and hashCode()!) method which uses String.equalsIgnoreCase() internally. However, note that contains() is a very expensive method for lists, since all elements could be iterated. Other collection types might be more appropriate.
TreeSet uses either the compareTo method of the objects, or (in this case) a Comparator. If the Comparator says the objects are equal (compare returns 0), the objects are equal. With String.CASE_INSENSITIVE_ORDER you can acchieve a collection which ignores the case of all contents.