क्या जावा में एक उपयोगिता विधि है जो निर्दिष्ट मूल्य के बराबर सभी तत्वों के साथ एक निर्दिष्ट लंबाई की एक सूची या सरणी उत्पन्न करती है (जैसे ["फू", "फू", "फू", "फू", "फू"])?
जवाबों:
आप उपयोग कर सकते हैं Collections.nCopies। ध्यान दें कि यह दिए गए ऑब्जेक्ट के संदर्भ को कॉपी करता है , न कि ऑब्जेक्ट को। यदि आप स्ट्रिंग्स के साथ काम कर रहे हैं, तो इससे कोई फर्क नहीं पड़ेगा क्योंकि वे वैसे भी अपरिवर्तनीय हैं।
List<String> list = Collections.nCopies(5, "foo");
System.out.println(list);
[फू, फू, फू, फू, फू]
किसी सरणी के लिए आप Arrays.fill (ऑब्जेक्ट [] ए, ऑब्जेक्ट वैल) का उपयोग कर सकते हैं
String[] strArray = new String[10];
Arrays.fill(strArray, "foo");
और अगर आपको सूची की आवश्यकता है, तो उपयोग करें
List<String> asList = Arrays.asList(strArray);
फिर मुझे दो पंक्तियों का उपयोग करना होगा: स्ट्रिंग [] strArray = नया स्ट्रिंग [5]; Arrays.fill (strArray, "foo") ;; क्या एक-पंक्ति समाधान है?
आप सूची प्राप्त करने के लिए एक-पंक्ति समाधान के रूप में Collections.nCopies (5, "foo") का उपयोग कर सकते हैं :
List<String> strArray = Collections.nCopies(5, "foo");
या toArrayएक सरणी प्राप्त करने के लिए इसके साथ गठबंधन करें ।
String[] strArray = Collections.nCopies(5, "foo").toArray(new String[5]);
String[] strArray = new String[5]; Arrays.fill(strArray, "foo");:। क्या एक-पंक्ति समाधान है?
संस्करण आप आदिम सरणियों (जावा 8) के लिए उपयोग कर सकते हैं:
DoubleStream.generate(() -> 123.42).limit(777).toArray(); // returns array of 777 123.42 double vals
ध्यान दें कि वह लौटता है double[], नहींDouble[]
IntegerStream, DoubleStream, LongStream के लिए काम करता है
युपीडी
और स्ट्रिंग डुप्स के लिए आप उपयोग कर सकते हैं:
Stream.generate(() -> "value").limit(400).toArray()
कोई अतिरिक्त शुल्क की आवश्यकता नहीं है, सिंगल लाइन
का उपयोग करके IntStream, आप एक पूर्णांक बना सकते हैं, उन्हें उस तत्व में मैप कर सकते हैं जिसे आप चाहते हैं और इसे एक सूची के रूप में इकट्ठा करें।
List<String> list = IntStream.rangeClosed(0, 5)
.mapToObj(i -> "foo")
.collect(Collectors.toList());
या, एक सरणी के रूप में
String[] arr = IntStream.rangeClosed(0, 5)
.mapToObj(i -> "foo")
.toArray(String[]::new);