2013-05-28 7 views
5

तो मैं एक String s जो चरित्र A की n उदाहरणों को मिलाकर होगा चाहते हैं, यह जावा अन्य में क्लीनर किया जा सकता है तोएक ही चरित्र के साथ कई बार दोहराए गए लंबाई की स्ट्रिंग कैसे बनाएं?

public static String stringOfSize(int size, char ch) { 
    StringBuilder s = new StringBuilder(); 
    while (size-- > 0) { 
     s.append(ch); 
    } 
    return s.toString(); 
} 

हम कर सकते हैं बेहतर है? बस सोच रहा।

+1

यदि आप पैरामीटर वैरिएबल नहीं बदलते हैं तो यह क्लीनर होगा, लेकिन अन्यथा यह मेरे लिए अच्छा लग रहा है। – Keppil

+4

आपको अपने निर्माता को निर्धारित करना चाहिए। (या बस 'char [] ') – SLaks

उत्तर

16
कुछ भी नहीं सब पर इस कोड के साथ गलत

... लेकिन Arrays.fill() हो सकता है आप उपयोग कर सकते हैं:

public static String stringOfSize(int size, char ch) 
{ 
    final char[] array = new char[size]; 
    Arrays.fill(array, ch); 
    return new String(array); 
} 
+0

का उपयोग करें मुझे लगता है कि यह विकल्प सबसे अच्छा है। गति बढ़ाने के लिए (लेकिन अधिक स्मृति का उपभोग करें) हम इस समाधान में कैशिंग भी जोड़ सकते हैं। 'मैप <इंटीजर, मैप <कैरेक्टर, स्ट्रिंग >> कैश' में स्टोर परिणाम और फिर पीढ़ी के बिना सही स्ट्रिंग प्राप्त करें। –

7

आप कर सकता है निम्नलिखित:

return StringUtils.repeat(ch, size); 

नोट: StringUtils के लिए अंतर्निहित नहीं है जेडीके - देखें http://commons.apache.org/proper/commons-lang/

+2

जेडीके में कोई अंतर्निहित 'स्ट्रिंगयूल्ट्स' नहीं है। – fge

+0

या केवल 'स्ट्रिंगयूट्स # दोहराना()' यदि 'स्ट्रिंगयूट्स 'उपलब्ध है। – Keppil

+0

@fge - आप सही हैं, एक नोट –

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