首頁  >  文章  >  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