java जावा, यदि सूची में स्ट्रिंग शामिल है, तो वापस लौटें




arrays string (5)

जावा में, मैं यह जांचना चाहता हूं कि क्या स्ट्रिंग List<String> myList में मौजूद है List<String> myList

कुछ इस तरह:

if(myList.contains("A")){
    //true
}else{
    // false
}

समस्या यह है कि myList में अन-ट्रिम डेटा हो सकता है:

{'  A', 'B  ', '  C  '}

मैं चाहता हूं कि यदि मेरा आइटम 'B' सूची में है, तो यह सच है। मुझे यह कैसे करना चाहिए? मैं एक लूपिंग संरचना से बचना चाहूंगा।


आप ऐसा करने के लिए एक अनुमानित स्ट्रिंग मिलान लाइब्रेरी का उपयोग करने में सक्षम हो सकते हैं, उदाहरण के लिए SecondString , लेकिन यह लगभग निश्चित रूप से ओवरकिल है - इसके बजाय प्रदान किए गए फॉर-लूप उत्तरों में से एक का उपयोग करें।


String search = "A";
for(String s : myList)
    if(s.contains(search)) return true;
return false;

यह सूची में प्रत्येक स्ट्रिंग पर पुनरावृति करेगा, और जांच करेगा कि इसमें वह स्ट्रिंग है जिसे आप खोज रहे हैं। यदि यह केवल रिक्त स्थान है जिसके लिए आप फंसना चाहते हैं, तो आप यह कर सकते हैं:

String search = "A";
for(String s : myList)
    if(s.replaceAll(" ","").contains(search)) return true;
return false;

जो पहले रिक्त स्थान को बदलने से पहले रिक्त स्थान को बदल देगा। इसके अतिरिक्त, यदि आप पहले स्ट्रिंग को ट्रिम करना चाहते हैं, तो आप कर सकते हैं:

String search = "A";
for(String s : myList)
    if(s.trim().contains(search)) return true;
return false;

आप इसे regex का उपयोग करके एक ही पंक्ति में कर सकते हैं:

if (myList.toString().matches(".*\\bA\\b.*"))

इस कोड को काफी अच्छा प्रदर्शन करना चाहिए।

BTW, आप इस तरह से एक चर से regex का निर्माण कर सकते हैं:

.matches("\\[.*\\b" + word + "\\b.*]")

मैंने एक गलत सकारात्मक मिलान को रोकने के लिए प्रत्येक छोर पर [ और ] जोड़ा जब खोज शब्द में प्रारंभ / अंत में एक खुला / करीबी वर्ग ब्रैकेट होता है।


इसे इस्तेमाल करे:

for(String str: myList) {
    if(str.trim().equals("A"))
       return true;
}
return false;

आपको contains होने के बजाय str.equals या str.equalsIgnoreCase का उपयोग करने की आवश्यकता है क्योंकि string कार्यों में List में contains समान नहीं हैं।

List<String> s = Arrays.asList("BAB", "SAB", "DAS");
s.contains("A"); // false
"BAB".contains("A"); // true

जावा 8 स्ट्रीम एपीआई के साथ:

List<String> myList = Arrays.asList("  A", "B  ", "  C  ");
return myList.stream().anyMatch(str -> str.trim().equals("B"));






list