首页  >  文章  >  Java  >  Java 中的字符串排序

Java 中的字符串排序

王林
王林原创
2024-08-30 15:32:111041浏览

在 Java 中对字符串进行排序并不是内置的 Java 功能,尽管 Java 确实提供了使用 Arrays.sort 对元素数组进行排序的技术,但 Java 库中可以使用直接方法对字符串进行排序。使用 Java 库提供的几种不同方法,我们可以轻松地在 Java 中进行排序,并且对字符串进行排序在任何 Java 应用程序中都有各种不同的用例。

开始您的免费软件开发课程

网络开发、编程语言、软件测试及其他

如何在 Java 中使用各种方式对字符串进行排序?

它有 2 种主要技术,开发人员可以根据用例使用它们。

  • 技术 1: 使用 Array.sort()。
  • 技术2:使用自定义比较器在Java中对字符串进行排序。
  • 技术 3: 使用 Java 8 流功能以及 Strings.chars。

1.技术 1 – 使用 Array.sort()

这是一种非常简单直接的技术。我们在 Java 中对元素数组进行排序的方式与我们类似,并且将应用类似的逻辑。

要实现此技术,下面是此排序的步骤和示例:

  • 第 1 步:从用户处获取输入字符串,并使用 java.util.Arrays 中存在的 Arrays.toCharArray() 方法将输入字符串转换为字符数组
  • 第 2 步: 使用 Arrays.sort 方法对这个新创建的字符数组应用自然排序,该方法也存在于同一个 jar java.util.Arrays 中。
  • 第 3 步: 使用 Java 字符串类将此排序后的字符数组转换回字符串,并将新创建的字符串存储在字符串对象中,因为字符串是不可变的

示例:

代码:

import java.util.Arrays;
import java.util.Scanner;
public class SortString {
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
System.out.println("Input String Value which should be sorted : ");
String inputString = scanner.nextLine();
char arrayOfCharacters[] = inputString.toCharArray(); // Step 1
Arrays.sort(arrayOfCharacters); // Step 2
String sortedString = new String(arrayOfCharacters); // Step 3
System.out.println("Before Sorting :  " + inputString);
System.out.println("After Sorting :  " + sortedString);
}
}

输出:

Java 中的字符串排序
Java 中的字符串排序

限制:

  • 理想情况下,这是由 Java 框架使用字符串中存在的每个字符的 ASCII 值来完成的。
  • 因此,只有在所需的字符串排序区分大小写的情况下才应使用此技术,这意味着由于大写字符的 ASCII 值小于小写字符,因此如果您的字符串同时具有这两种字符,则排序将不正确大小写字符,即混合字符串。

示例:

Java 中的字符串排序

输出:

Java 中的字符串排序

2.技术 2 – 使用自定义比较器

这种技术主要用于当输入字符串可以是小写和大写混合字符时。这不是如上所述的直接技术,并且需要更多编码。我们将使用 Java 提供的相同数组排序技术,但同时我们将使用比较器,它将帮助我们比较字符串中的每个字符。

下面是在 Java 中实现此技术的步骤和此类字符串排序的示例。

  • 第 1 步: 从用户处获取输入字符串,并使用 Java for 循环功能将输入字符串转换为字符数组。
  • 第 2 步: 使用 Arrays.sort 方法和比较器对这个新创建的字符数组应用 Java 排序,比较器将在排序过程中忽略大小写,并且存在于同一个 jar java.util.Arrays 中。
  • 第 3 步: 使用 Java StringBuilder 类将此排序的字符数组转换回字符串,并且无需将新创建的字符串存储在字符串对象中,因为 StringBuilder 是可变的。

示例:

代码:

import java.util.Arrays;
import java.util.Scanner;
import java.util.Comparator;
public class SortString {
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
System.out.println("Input a String Value which should be sorted : ");
String inputString = scanner.nextLine();
Character arrayOfCharacters[] = new Character[inputString.length()];
for (int i = 0; i < inputString.length(); i++) {
arrayOfCharacters[i] = inputString.charAt(i); // Step 1
}
Arrays.sort(arrayOfCharacters, new Comparator<Character>(){  // Step 2
@Override
public int compare(Character c1, Character c2)
{
return Character.compare(Character.toLowerCase(c1),
Character.toLowerCase(c2));
}
});
StringBuilder outputString = new StringBuilder(arrayOfCharacters.length);
for (Character c : arrayOfCharacters)
outputString.append(c.charValue());  // Step 3
System.out.println("Before Sorting : " + inputString);
System.out.println("After Sorting considering casing: " + outputString.toString());
}
}

输出:

Java 中的字符串排序

Java 中的字符串排序

限制:

  • 这种排序技术是在 Java 中进行排序的理想方法,其中输入字符串可以是具有大小写字符的任何值。
  • 这种排序技术没有任何限制,但实现的代码有点冗长。

3.技术 3 – 使用 Java 8 流功能以及 Strings.chars 方法

该技术是一种新技术,代码行最少,并使用 Java 8 Stream 功能以及仅与 Java 8 内联的 String.chars 方法。因此,请确保在应用此技术时,您的 Java 应用程序主要在输入字符串可以是小写和大写混合字符时使用。这不是如上所述的直接技术,并且需要更多编码。我们将使用 Java 提供的相同数组排序技术,但同时我们将使用比较器,它将帮助我们比较字符串中的每个字符。

结论

在 Java 中对字符串进行排序非常简单,并且有许多不同的方法,开发人员可以根据应用程序的要求使用其中任何一种方法。它的范围从 2 行代码到编写全新的排序方法,并且还允许通过忽略大小写来对字符串进行排序。

以上是Java 中的字符串排序的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn