मान लें कि मेरे पास 1,2,3,4,5,6,7
इनपुट जैसे String
के रूप में इनपुट का एक सेट है। मैं उन संख्याओं को List
Long
ऑब्जेक्ट्स यानी List<Long>
में परिवर्तित करना चाहता हूं।सूची <Long>
क्या कोई भी सबसे आसान तरीका सुझा सकता है?
मान लें कि मेरे पास 1,2,3,4,5,6,7
इनपुट जैसे String
के रूप में इनपुट का एक सेट है। मैं उन संख्याओं को List
Long
ऑब्जेक्ट्स यानी List<Long>
में परिवर्तित करना चाहता हूं।सूची <Long>
क्या कोई भी सबसे आसान तरीका सुझा सकता है?
मैं उत्कृष्ट Google की गुवा लाइब्रेरी का उपयोग करने के लिए इसका उपयोग करूंगा। String.split कई परेशानी का कारण बन सकता है।
String numbers="1,2,3,4,5,6,7";
Iterable<String> splitIterator = Splitter.on(',').split(numbers);
List<String> list= Lists.newArrayList(splitIterator);
आपका मतलब कुछ ऐसा है?
String numbers = "1,2,3,4,5,6,7";
List<Long> list = new ArrayList<Long>();
for (String s : numbers.split(","))
list.add(Long.parseLong(s));
System.out.println(list);
जावा 8 जब से तुम
List<Long> list = Stream.of(numbers.split(","))
.map(Long::parseLong)
.collect(Collectors.toList());
लिटिल छोटे संस्करणों के रूप में यह पुनर्लेखन कर सकते हैं List<String>
List<String> fixedSizeList = Arrays.asList(numbers.split(","));
List<String> rezisableList = new ArrayList<>(fixedSizeList);
या
List<String> list = new ArrayList<>(Arrays.asList(numbers.split(",")));
onliner प्राप्त करना चाहते हैं, तो 0
हाँ, आप सही हैं .. अन्य सरल तरीका ... – Kathir
String input = "1,2,3,4,5,6,7";
String[] numbers = input.split("\\,");
List<Integer> result = new ArrayList<Integer>();
for(String number : numbers) {
try {
result.add(Integer.parseInt(number.trim()));
} catch(Exception e) {
// log about conversion error
}
}
क्या जावा या अपाचे कॉमन्स या किसी अन्य विधि में किसी विधि को कॉल करके सरल तरीके से परिणाम प्राप्त करने के लिए कोई उपयोगिता विधि उपलब्ध है? – Kathir
स्ट्रिंग टू इंटीजर को कन्वर्ट करने के लिए आप विज़िटर पैटर्न के आधार पर कुछ अपाचे या अमरूद संग्रह का उपयोग कर सकते हैं, लेकिन यह कोड को सरल नहीं बनायेगा। यह पढ़ना मुश्किल हो जाएगा। – alexey28
पाठ संपादित किया गया था, उन्होंने एक ऑब्जेक्ट सूची का अनुरोध किया था जो लंबी सूची नहीं है ... – jocelyn
आप उपयोग कर सकते हैं String.split()
और Long.valueOf()
:
String numbers = "1,2,3,4,5,6,7";
List<Long> list = new ArrayList<Long>();
for (String s : numbers.split(","))
list.add(Long.valueOf(s));
System.out.println(list);
java-8 का उपयोग कर सरल और आसान समाधान (धागा के पूरा होने के लिए):
String str = "1,2,3,4,5,6,7";
List<Long> list = Arrays.stream(str.split(",")).map(Long::parseLong).collect(Collectors.toList());
System.out.println(list);
[1, 2, 3, 4, 5, 6, 7]
और भी बेहतर, Pattern.splitAsStream()
का उपयोग कर:
Pattern.compile(",").splitAsStream(str).map(Long::parseLong).collect(Collectors.toList());
आप java8 पर नहीं कर रहे हैं और उपयोग करने के लिए नहीं करना चाहते हैं लूप होता है, तो आप Guava
List<Long> longValues = Lists.transform(Arrays.asList(numbersArray.split(",")), new Function<String, Long>() {
@Override
public Long apply(String input) {
return Long.parseLong(input.trim());
}
});
उपयोग कर सकते हैं के रूप में दूसरों Java8 आपने स्ट्रीम के उपयोग कर सकते हैं के लिए उल्लेख किया है।
List<Long> numbers = Arrays.asList(numbersArray.split(","))
.stream()
.map(String::trim)
.map(Long::parseLong)
.collect(Collectors.toList());;
'Arrays.asList (numbersArray.split (", ")) के बजाय।स्ट्रीम() ', बस 'Arrays.stream (numbersArray.split (", "))' या 'Stream.of (numbersArray.split (", "))' का उपयोग किया जा सकता है। –
@ UtkuÖzdemir वास्तव में cant। उस मामले में Lists.transform का उपयोग स्ट्रिंग से लांग को परिवर्तित करने के लिए नहीं किया जा सकता है। –
मेरा मतलब जावा 8 समाधान है, अमरूद नहीं। –
धन्यवाद और यह काम किया गया। – Kathir
यह समस्या का समाधान कैसे करता है? सूची कहां है? –
Swamy
मानक जावा का उपयोग न करें (इसलिए सबसे आसान तरीका नहीं), न ही समस्या को हल करें। –