За да намерите низ от списък не работи според очакванията, като използвате съдържа

Имам списък, който е дефиниран по-долу:

def list1=["Test1","Test2","Test3"]
String str="Test2"

println("Found The String is:"+list1.contains(str));

//It is returning false even though there is a matching string.

person Studentlearner    schedule 10.05.2019    source източник
comment
Този пример не е неуспешен за мен (Groovy 2.5.6)   -  person cfrick    schedule 10.05.2019
comment
Работи и за мен (Groovy 2.4.8, JVM 1.8.0_201 [не знам дали jvm има нещо общо с това])   -  person Perplexabot    schedule 10.05.2019


Отговори (1)


Това, което сте въвели там, работи, така че има нещо друго нередно. Предполагам, че сте направили нещо като:

String part = "Test"
String str="Test2"
def list1=["${part}1","${part}2","Test3"]
def found = list1.contains(str)

в този случай found ще бъде невярно... защото:

"${'test'}" не е равно на "test", за някои дефиниции на равно... въпреки че отпечатването и на двете ви кара да мислите така.

Ето защо: Groovy различни резултати при използване на equals() и == на GStringImpl

person billjamesdev    schedule 11.05.2019