जवाबों:
toCharArray
इसके Arrays.sort
बाद एक स्ट्रिंग निर्माता द्वारा कॉल किया गया:
import java.util.Arrays;
public class Test
{
public static void main(String[] args)
{
String original = "edcba";
char[] chars = original.toCharArray();
Arrays.sort(chars);
String sorted = new String(chars);
System.out.println(sorted);
}
}
संपादित करें: जैसा कि अंक बताते हैं, यह विफल हो जाएगा अगर स्ट्रिंग में सरोगेट जोड़े या वास्तव में समग्र वर्ण (अलग वर्ण के रूप में उच्चारण + ई) शामिल हैं, तो उस बिंदु पर यह बहुत कठिन हो जाता है ... उम्मीद है कि आपको इसकी आवश्यकता नहीं है :) इसके अलावा, यह केवल पूंजीकरण, लहजे या किसी अन्य चीज को ध्यान में रखे बिना, अध्यादेश द्वारा आदेश दे रहा है।
sorted
पहले से ही एक है String
... क्या आप toString()
इसे करने के लिए कॉल करने की उम्मीद करेंगे ?
char[] c = s.toCharArray(); Arrays.sort(c); String sorted = new String(c);
नहीं, कोई अंतर्निहित स्ट्रिंग विधि नहीं है। आप इसे एक वर्ण सरणी में परिवर्तित कर सकते हैं, इसे Arrays.sort का उपयोग करके सॉर्ट कर सकते हैं और उस स्ट्रिंग में वापस परिवर्तित कर सकते हैं।
String test= "edcba";
char[] ar = test.toCharArray();
Arrays.sort(ar);
String sorted = String.valueOf(ar);
या, जब आप अपरकेस और उच्चारण पात्रों जैसे स्थानीय-विशिष्ट सामान के साथ सही ढंग से व्यवहार करना चाहते हैं:
import java.text.Collator;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Locale;
public class Test
{
public static void main(String[] args)
{
Collator collator = Collator.getInstance(new Locale("fr", "FR"));
String original = "éDedCBcbAàa";
String[] split = original.split("");
Arrays.sort(split, collator);
String sorted = "";
for (int i = 0; i < split.length; i++)
{
sorted += split[i];
}
System.out.println(sorted); // "aAàbBcCdDeé"
}
}
जावा 8 में इसके साथ किया जा सकता है:
String s = "edcba".chars()
.sorted()
.collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append)
.toString();
एक छोटा सा विकल्प जो लंबाई के स्ट्रिंग्स के स्ट्रीम के साथ काम करता है (प्रत्येक स्ट्रिंग में प्रत्येक अक्षर स्ट्रिंग में स्ट्रिंग में बदल जाता है) है:
String sorted =
Stream.of("edcba".split(""))
.sorted()
.collect(Collectors.joining());
वर्ण की सरणी के लिए परिवर्तित → क्रमबद्ध → परिवर्तित वापस स्ट्रिंग के लिए :
String s = "edcba";
char[] c = s.toCharArray(); // convert to array of chars
java.util.Arrays.sort(c); // sort
String newString = new String(c); // convert back to String
System.out.println(newString); // "abcde"
सॉर्ट Arrays.sort विधि का उपयोग किए बिना एक अधिक कच्चा दृष्टिकोण। यह सम्मिलन प्रकार का उपयोग कर रहा है।
public static void main(String[] args){
String wordSt="watch";
char[] word=wordSt.toCharArray();
for(int i=0;i<(word.length-1);i++){
for(int j=i+1;j>0;j--){
if(word[j]<word[j-1]){
char temp=word[j-1];
word[j-1]=word[j];
word[j]=temp;
}
}
}
wordSt=String.valueOf(word);
System.out.println(wordSt);
}
String a ="dgfa";
char [] c = a.toCharArray();
Arrays.sort(c);
return new String(c);
ध्यान दें कि यह अपेक्षा के अनुरूप काम नहीं करेगा यदि यह एक मिश्रित मामला है स्ट्रिंग (यह लोअरकेस से पहले अपरकेस डाल देगा)। आप इसे बदलने के लिए सॉर्ट विधि के लिए एक तुलनित्र पास कर सकते हैं।
प्रक्रिया:
सांकेतिक टुकड़ा:
String input = "world";
char[] arr = input.toCharArray();
Arrays.sort(arr);
String sorted = new String(arr);
System.out.println(sorted);
प्रश्न: जावा में एक तार को छाँटते हैं
public class SortAStringInJava {
public static void main(String[] args) {
String str = "Protijayi";
// Method 1
str = str.chars() // IntStream
.sorted().collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append).toString();
System.out.println(str);
// Method 2
str = Stream.of(str.split(" ")).sorted().collect(Collectors.joining());
System.out.println(str);
}
}
public static void main(String[] args) {
String str = "helloword";
char[] arr;
List<Character> l = new ArrayList<Character>();
for (int i = 0; i < str.length(); i++) {
arr = str.toCharArray();
l.add(arr[i]);
}
Collections.sort(l);
str = l.toString();
System.out.println(str);
str = str.replaceAll("\\[", "").replaceAll("\\]", "")
.replaceAll("[,]", "");
System.out.println(str);
}
जावा में संग्रह का उपयोग किए बिना:
import java.util.Scanner;
public class SortingaString {
public static String Sort(String s1)
{
char ch[]=s1.toCharArray();
String res=" ";
for(int i=0; i<ch.length ; i++)
{
for(int j=i+1;j<ch.length; j++)
{
if(ch[i]>=ch[j])
{
char m=ch[i];
ch[i]=ch[j];
ch[j]=m;
}
}
res=res+ch[i];
}
return res;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("enter the string");
String s1=sc.next();
String ans=Sort( s1);
System.out.println("after sorting=="+ans);
}
}
आउटपुट:
स्ट्रिंग दर्ज करें ==
छंटाई
छँटाई के बाद == जिनोरस्ट