2012-08-16 14 views
9

जावा में होता है, मैं निम्न विधि है:कैसे निर्धारित करें कि स्ट्रिंग की एक सूची शून्य या खाली तत्वों

public String normalizeList(List<String> keys) { 
    // ... 
} 

मैं जाँच करने के लिए है कि keys हैं:

  • null ही नहीं है; और
  • खाली नहीं है (size() == 0); और
  • में String तत्व नहीं हैं जो null हैं; और
  • किसी भी String तत्वों है कि खाली ("")

यह एक उपयोगिता विधि है कि एक में जाना होगा कि "आम" शैली जार (कक्षा DataUtils की तरह कुछ हो wil) कर रहे हैं नहीं है। यहाँ मैं क्या है, लेकिन मैं अपने गलत विश्वास है:

public String normalize(List<String> keys) { 
    if(keys == null || keys.size() == 0 || keys.contains(null) || keys.contains("")) 
     throw new IllegalArgumentException("Bad!"); 

    // Rest of method... 
} 

मेरा मानना ​​है कि keys.contains(null) और keys.contains("") के लिए पिछले 2 चेकों सही नहीं हैं और संभावना क्रम अपवाद फेंक दिया होगा। मुझे पता है कि मैं सिर्फ if कथन के अंदर सूची के माध्यम से लूप कर सकता हूं, और वहां नल/खालीियों की जांच कर सकता हूं, लेकिन यदि यह मौजूद है तो मैं एक और अधिक सुरुचिपूर्ण समाधान की तलाश में हूं।

+0

* "मुझे विश्वास है keys.contains (शून्य) और keys.contains के लिए पिछले 2 चेकों (" ") सही नहीं हैं और संभावना क्रम फेंक दिया जाएगा अपवाद। "*: क्यों? आप किस अपवाद की उम्मीद करते हैं? – assylias

+0

keys.contains (शून्य) ठीक होगा हालांकि key.contains ("") केवल कुछ स्थितियों में काम करेगा, लेकिन अपवाद नहीं फेंकना चाहिए। –

+1

मैन, आपके पास अपने ऐप के चारों ओर उड़ने वाले बहुत सारे नल हैं ... –

उत्तर

23
keys.contains(null) || keys.contains("") 

किसी भी क्रम अपवाद फेंक और true परिणाम देख सकते हैं तो आपकी सूची अशक्त (या) रिक्त स्ट्रिंग है नहीं करता है।

3

यह मेरे लिए ठीक लग रहा है, केवल अपवाद आप keys.contains(null) से मिलेगा और अगर keys ही null था keys.contains("") होगा।

हालांकि जब से आप पहले इसकी जांच करते हैं तो आप जानते हैं कि इस बिंदु पर keysnull नहीं है, इसलिए कोई रनटाइम अपवाद नहीं होगा।

0

मुझे यकीन नहीं है लेकिन क्या ApacheCommon लाइब्रेरी में ऐसा करने के लिए कोई सहायक वर्ग नहीं है? जैसे आप एक स्ट्रिंग के लिए isEmpty है और आप ApacheCommons पुस्तकालय में isNullOrEmpty है

0

चेक एक पास

public static boolean empty(String s) { 
    if (s == null) 
     return true; 
    else if (s.length() == 0) 
     return true; 
    return false; 
    } 

    public String normalize(List<String> keys) { 
    if(keys == null || keys.size() == 0) 
     throw new IllegalArgumentException("Bad!"); 
    for (String key: keys) 
     if(empty(key)) 
     throw new IllegalArgumentException("Empty!"); 

    // Rest of method... 
    return null; 
    } 
0

में सूची जब तुम भी अपाचे StringUtils का उपयोग और देखें कि क्या स्ट्रिंग ISBLANK, इस के लिए जाँच करेगा सकता है शून्य, खाली स्थान और आपके मूल्य को भी ट्रिम करेगा।

if(StringUtils.isBlank(listItemString)){...} 

चेकआउट StringUtils यहाँ डॉक्स:

https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html

संबंधित मुद्दे