📌  相关文章
📜  在Java中对字符串进行排序(2 种不同的方式)

📅  最后修改于: 2022-05-13 01:55:29.725000             🧑  作者: Mango

在Java中对字符串进行排序(2 种不同的方式)

String 类没有任何直接对字符串进行排序的方法,但我们可以通过依次应用其他方法来对字符串进行排序。字符串是一个字符序列。在Java中, String 的对象是不可变的,这意味着一个常量,一旦创建就不能更改。

创建字符串

在Java中创建字符串有两种方法:

  • 字符串字面量
String s = “GeeksforGeeks”;
  • 使用关键字
String s = new String (“GeeksforGeeks”);

方法:

有两种方法可以按字母顺序对Java中的任何字符串进行排序

  1. 不使用 sort() 方法
  2. 使用sort() 方法

插图:

Input string : "geeksforgeeks"
Output string : "eeeefggkkorss"

现在让我们讨论方法并实现相同的方法。

方法一:不使用 sort() 方法

在这里,我们将提出一种方法来对字符串进行排序,而不使用任何预定义的逻辑。因此,从面试的角度来看,它也确实成为一种重要的方法。

程序:

  1. 借助 String 类的 toCharArray() 方法将字符串转换为数组
  2. 现在使用嵌套循环来检查数组的交换元素。
  3. 打印这些字符数组元素。

例子

Java
// Java program to Sort a String Alphabetically
// Using toCharArray() method
// Without using sort() method
 
// Importing required classes
import java.io.*;
import java.util.Arrays;
 
// Main class
class GFG {
 
    // Main driver method
    public static void main(String[] args) throws Exception
    {
        // Custom string input
        String str = "geeksforgeeks";
       
        // Converting string into an array for computation
        char arr[] = str.toCharArray();
 
        // Nested loops for comparison of characters
        // in above character array
       
        char temp;
 
        int i = 0;
        while (i <= arr.length) {
            int j = i + 1;
            while (j <= arr.length) {
                if (arr[j] < arr[i]) {
                   
                    // Comparing the characters one by one
                    temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
                j += 1;
            }
            i += 1;
        }
 
        // By now loop is done means we have
        // iterated the whole array
        System.out.println(arr);
    }
}


Java
// Java program to Sort a String Alphabetically
// Using toCharArray() method
// With using the sort() method
 
// Importing Arrays class from java.util package
import java.util.Arrays;
 
// Main class
public class GFG {
    // Method 1
    // To sort a string alphabetically
    public static String sortString(String inputString)
    {
        // Converting input string to character array
        char tempArray[] = inputString.toCharArray();
 
        // Sorting temp array using
        Arrays.sort(tempArray);
 
        // Returning new sorted string
        return new String(tempArray);
    }
 
    // Method 2
    // Main driver method
    public static void main(String[] args)
    {
        // Custom string as input
        String inputString = "geeksforgeeks";
        String outputString = sortString(inputString);
 
        // Print and display commands
 
        // Input string
        System.out.println("Input String : " + inputString);
        // Output string
        System.out.println("Output String : "
                           + outputString);
    }
}


Java
// Java Program to Sort a Mixed String Containing
// Uppercase and Lowercase Characters
 
// Importing required classes
import java.util.Arrays;
import java.util.Comparator;
 
// Main class
class GFG {
    // Method 1
    // To sort a mixed string
    public static String sortString(String inputString)
    {
        // Converting input string to Character array
        Character tempArray[]
            = new Character[inputString.length()];
 
        for (int i = 0; i < inputString.length(); i++) {
            tempArray[i] = inputString.charAt(i);
        }
 
        // Sort, ignoring case during sorting
        Arrays.sort(tempArray, new Comparator() {
             
          // Method 2
            // To compare characters
            @Override
            public int compare(Character c1, Character c2)
            {
                // Ignoring case
                return Character.compare(
                    Character.toLowerCase(c1),
                    Character.toLowerCase(c2));
            }
        });
 
        // Using StringBuilder to convert Character array to
        // String
        StringBuilder sb
            = new StringBuilder(tempArray.length);
 
        for (Character c : tempArray)
            sb.append(c.charValue());
 
        return sb.toString();
    }
 
    // Method 3
    // MAin driver method
    public static void main(String[] args)
    {
        // Custom input string
        String inputString = "GeeksforGeeks";
 
        // Calling method 1 to sort input string
        // and storing in a string
        String outputString = sortString(inputString);
 
        // Print and display the input and output strings
        System.out.println("Input String : " + inputString);
        System.out.println("Output String : "
                           + outputString);
    }
}


输出:

eeeefggkkorss

方法 2:使用sort() 方法

2A使用sort() 方法 -自然排序

程序:

  1. 主要逻辑是 String 类的toCharArray() 方法在输入字符串上创建输入字符串的字符数组。
  2. 现在使用 Arrays.sort(char c[])方法对字符数组进行排序。
  3. 使用 String 类构造函数从 char 数组创建排序字符串。

示例 1

Java

// Java program to Sort a String Alphabetically
// Using toCharArray() method
// With using the sort() method
 
// Importing Arrays class from java.util package
import java.util.Arrays;
 
// Main class
public class GFG {
    // Method 1
    // To sort a string alphabetically
    public static String sortString(String inputString)
    {
        // Converting input string to character array
        char tempArray[] = inputString.toCharArray();
 
        // Sorting temp array using
        Arrays.sort(tempArray);
 
        // Returning new sorted string
        return new String(tempArray);
    }
 
    // Method 2
    // Main driver method
    public static void main(String[] args)
    {
        // Custom string as input
        String inputString = "geeksforgeeks";
        String outputString = sortString(inputString);
 
        // Print and display commands
 
        // Input string
        System.out.println("Input String : " + inputString);
        // Output string
        System.out.println("Output String : "
                           + outputString);
    }
}
输出
Input String : geeksforgeeks
Output String : eeeefggkkorss

2B使用sort() 方法 -自定义排序

插图:

Input String : GeeksforGeeks
Output String : eeeefGGkkorss

程序:

  1. 将输入字符串转换为字符数组。没有直接的方法可以做到这一点。我们将使用 for 循环来填充数组。
  2. 使用Arrays.sort(T [ ], Comparator c)方法对字符数组进行排序。为此,我们必须根据我们的自定义排序行为实现compare()方法。
  3. 现在我们可以使用 StringBuilder 将字符数组转换为 String。

示例 2

Java

// Java Program to Sort a Mixed String Containing
// Uppercase and Lowercase Characters
 
// Importing required classes
import java.util.Arrays;
import java.util.Comparator;
 
// Main class
class GFG {
    // Method 1
    // To sort a mixed string
    public static String sortString(String inputString)
    {
        // Converting input string to Character array
        Character tempArray[]
            = new Character[inputString.length()];
 
        for (int i = 0; i < inputString.length(); i++) {
            tempArray[i] = inputString.charAt(i);
        }
 
        // Sort, ignoring case during sorting
        Arrays.sort(tempArray, new Comparator() {
             
          // Method 2
            // To compare characters
            @Override
            public int compare(Character c1, Character c2)
            {
                // Ignoring case
                return Character.compare(
                    Character.toLowerCase(c1),
                    Character.toLowerCase(c2));
            }
        });
 
        // Using StringBuilder to convert Character array to
        // String
        StringBuilder sb
            = new StringBuilder(tempArray.length);
 
        for (Character c : tempArray)
            sb.append(c.charValue());
 
        return sb.toString();
    }
 
    // Method 3
    // MAin driver method
    public static void main(String[] args)
    {
        // Custom input string
        String inputString = "GeeksforGeeks";
 
        // Calling method 1 to sort input string
        // and storing in a string
        String outputString = sortString(inputString);
 
        // Print and display the input and output strings
        System.out.println("Input String : " + inputString);
        System.out.println("Output String : "
                           + outputString);
    }
}
输出
Input String : GeeksforGeeks
Output String : eeeefGGkkorss