Java中按字母顺序对字符串字符进行排序的4种不同方法

您所在的位置:网站首页 JAVA输入字符输出字符循环次数 Java中按字母顺序对字符串字符进行排序的4种不同方法

Java中按字母顺序对字符串字符进行排序的4种不同方法

2023-11-16 00:47| 来源: 网络整理| 查看: 265

介绍 : 有时我们需要按字母顺序对字符串中的所有字符进行排序。由于String在Java中是不可变的,因此它将创建一个不同的字符串变量。例如,字符串“ albert ”在排序后将变为“ abelrt”。在这个Java示例中,我们将学习如何以不同的方式按字母顺序对字符串的字符进行排序。 让我们来看看 : 使用循环: 任何排序的基本方法是使用循环。我们将使用两个for循环,并且两者都将在另一个内部运行。外循环将从字符串的左侧开始一个接一个的选择,内循环将其与字符串左侧的所有其他元素进行比较。如果发现内循环较小的任何元素,我们将其与外循环指向的元素交换。让我用代码向您展示该算法: import java.util.Arrays; import java.util.Scanner;

class Main {     public static void main(String[] args) {         //1         Scanner scanner = new Scanner(System.in);

        //2         System.out.println("Enter a string : ");         String userInput = scanner.nextLine();

        //3         char[] charArray = userInput.toCharArray();

        //4         for (int i = 0; i < charArray.length; i++) {             for (int j = i + 1; j < charArray.length; j++) {                 if (Character.toLowerCase(charArray[j]) < Character.toLowerCase(charArray[i])) {                     swapChars(i, j, charArray);                 }             }         }

        //6         System.out.println("Sorted string " + String.valueOf(charArray));     }

    //5     private static void swapChars(int i, int j, char[] charArray) {         char temp = charArray[i];         charArray[i] = charArray[j];         charArray[j] = temp;     }

} 解释 : 1.    创建一个Scanner对象以读取用户输入值。 2.    要求用户输入一个字符串。读取它并将其存储在userInput变量中。 3.    我们计划比较此字符串的每个字符并交换并按升序排列。由于字符串是不可变的,因此我们需要先将字符串值转换为数组。为此,我们使用toCharArray()返回一个字符数组。 4.    现在,使用两个嵌套的for循环对数组的内容进行排序。在这里,在比较两个字符之前,我们将它们转换为小写字母,因为大写和小写字母的ASCII值都不同。 5.    swapChars函数用于交换数组中的两个字符。它以字符在数组中的位置作为输入。 6.    最后,将排序后的字符串输出给用户。 样本输出: Enter a string : Alphabet Sorted string Aabehlpt

Enter a string : elephant Sorted string aeehlnpt 不使用循环排序: 除了使用两个for循环,我们还可以像下面这样直接对字符数组进行排序: import java.util.Arrays; import java.util.Scanner;

class Main {     public static void main(String[] args) {         Scanner scanner = new Scanner(System.in);

        System.out.println("Enter a string : ");         String userInput = scanner.nextLine();

        char[] charArray = userInput.toCharArray();

        Arrays.sort(charArray);         System.out.println("Sorted string " + String.valueOf(charArray));     } } 此方法的唯一问题是,它将无法对同时包含大写和小写字母的字符串进行排序。如果字符串仅是大写或小写,它将起作用。 例子 : Elephant Sorted string Eaehlnpt

Enter a string : elephant Sorted string aeehlnpt

Enter a string : ELEPHANT Sorted string AEEHLNPT 使用比较器: 我们可以改进上述程序,以比较所有大写和小写字符,如下所示: import java.util.Arrays; import java.util.Comparator; import java.util.Scanner;

class Main {     public static void main(String[] args) {         Scanner scanner = new Scanner(System.in);

        System.out.println("Enter a string : ");         String userInput = scanner.nextLine();

        //1         Character[] charArray = new Character[userInput.length()];

        for (int i = 0; i < userInput.length(); i++) {             charArray[i] = userInput.charAt(i);         }

        //2         Arrays.sort(charArray, Comparator.comparingInt(Character::toLowerCase));

        StringBuilder sb = new StringBuilder(charArray.length);         for (Character c : charArray)             sb.append(c.charValue());

        System.out.println("Sorted string " + sb.toString());     } } 1.    首先,我们从字符串创建一个Character数组。 2.    然后,我们传递了一个lambda来比较第二个参数中的字符。lamda实际上如下所示: Arrays.sort(charArray, new Comparator() {

           @Override            public int compare(Character o1, Character o2) {                return Character.compare(Character.toLowerCase(o1),                        Character.toLowerCase(o2));            }        }); 最后,我们使用StringBuilder将数组转换为字符串。它将按预期排列字符。 例子 : Enter a string : Elephant Sorted string aEehlnpt 使用Java Stream: Java 8流API提供了一种解决此问题的漂亮方法。 import java.util.Comparator; import java.util.Scanner; import java.util.stream.Collectors; import java.util.stream.Stream;

class Main {     public static void main(String[] args) {         Scanner scanner = new Scanner(System.in);

        System.out.println("Enter a string : ");         String userInput = scanner.nextLine();

        String finalString =                 Stream.of(userInput.split(""))                         .sorted(Comparator.comparingInt(o -> Character.toLowerCase(o.charAt(0))))                         .collect(Collectors.joining());

        System.out.println("Sorted string " + finalString);     } } 在这里,我们在sorted()方法中使用了与上面相同的比较器。它将给出如下输出: Enter a string : Elephant Sorted string aEehlnpt   结论 : 在Java中,我们已经看到了四种不同的方式来对字符串中的字符进行排序。实际上,第二种方法和第三种方法是相同的。您可以使用第三个而不是第二个来支持所有大写和小写字母。您要使用哪种方法取决于您的要求。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3