推薦答案
要對(duì)包含數(shù)字的字符串進(jìn)行排序,可以使用自定義比較器來實(shí)現(xiàn)按照字符串中數(shù)字的大小進(jìn)行排序。下面是一種實(shí)現(xiàn)方式:
import java.util.Arrays;
import java.util.Comparator;
class CustomComparator implements Comparator {
@Override
public int compare(String str1, String str2) {
// 提取字符串中的數(shù)字部分進(jìn)行比較
int num1 = Integer.parseInt(str1.replaceAll("\\D", ""));
int num2 = Integer.parseInt(str2.replaceAll("\\D", ""));
return num1 - num2;
}
}
public class StringSorting {
public static void main(String[] args) {
String[] strings = {"apple3", "banana12", "orange5"};
Arrays.sort(strings, new CustomComparator());
for (String str : strings) {
System.out.println(str);
}
}
}
在上述示例中,我們定義了一個(gè)自定義比較器CustomComparator,它通過使用replaceAll()方法和正則表達(dá)式\\D來移除字符串中的非數(shù)字字符,然后將提取到的數(shù)字部分轉(zhuǎn)換為整數(shù)。然后,我們使用Arrays.sort()方法與自定義比較器一起對(duì)字符串?dāng)?shù)組進(jìn)行排序,并輸出排序后的結(jié)果。
輸出結(jié)果為:
apple3
orange5
banana12
以上代碼通過提取字符串中的數(shù)字部分來進(jìn)行排序,如果字符串中沒有數(shù)字,則按照普通的字典順序進(jìn)行排序。
其他答案
-
若要對(duì)字符串進(jìn)行排序,且字符串中都包含數(shù)字,可以采用自定義比較器的方式,通過提取字符串中的數(shù)字部分進(jìn)行比較。下面是一種實(shí)現(xiàn)方式:
import java.util.Arrays;
import java.util.Comparator;
class CustomComparator implements Comparator
{ @Override
public int compare(String str1, String str2) {
// 提取字符串中的數(shù)字部分進(jìn)行比較
int num1 = extractNumber(str1);
int num2 = extractNumber(str2);
return num1 - num2;
}
private int extractNumber(String str) {
StringBuilder number = new StringBuilder();
for (char c : str.toCharArray()) {
if (Character.isDigit(c)) {
number.append(c);
}
}
return Integer.parseInt(number.toString());
}
}
public class StringSorting {
public static void main(String[] args) {
String[] strings = {"apple3", "banana12", "orange5"};
Arrays.sort(strings, new CustomComparator());
for (String str : strings) {
System.out.println(str);
}
}
}
在上述示例中,我們定義了一個(gè)自定義比較器CustomComparator,其中extractNumber()方法用于提取字符串中的數(shù)字部分,使用Character.isDigit()方法判斷字符是否為數(shù)字,并將其追加到StringBuilder中。然后,我們將提取到的數(shù)字部分轉(zhuǎn)換為整數(shù),并使用自定義比較器對(duì)字符串?dāng)?shù)組進(jìn)行排序。
輸出結(jié)果為:
apple3
orange5
banana12
以上代碼通過提取字符串中的數(shù)字部分來進(jìn)行排序,確保字符串中都包含數(shù)字。如果字符串中沒有數(shù)字,則按照普通的字典順序進(jìn)行排序。
-
想要對(duì)包含數(shù)字的字符串進(jìn)行排序,可以使用自定義比較器來實(shí)現(xiàn)按照數(shù)字的大小進(jìn)行排序。下面是一種實(shí)現(xiàn)方式:
import java.util.Arrays;
import java.util.Comparator;
class CustomComparator implements Comparator
{ @Override
public int compare(String str1, String str2) {
// 提取字符串中的數(shù)字部分進(jìn)行比較
int num1 = extractNumber(str1);
int num2 = extractNumber(str2);
return num1 - num2;
}
private int extractNumber(String str) {
StringBuilder numBuilder = new StringBuilder();
for (char c : str.toCharArray()) {
if (Character.isDigit(c)) {
numBuilder.append(c);
}
}
return Integer.parseInt(numBuilder.toString());
}
}
public class StringSorting {
public static void main(String[] args) {
String[] strings = {"apple3", "banana12", "orange5"};
Arrays.sort(strings, new CustomComparator());
for (String str : strings) {
System.out.println(str);
}
}
}
在上述示例中,我們定義了一個(gè)自定義比較器CustomComparator,其中的extractNumber()方法用于提取字符串中的數(shù)字部分。我們遍歷字符串中的字符,通過Character.isDigit()方法判斷字符是否為數(shù)字,并將其追加到字符串構(gòu)建器numBuilder中。然后,我們將提取到的數(shù)字部分轉(zhuǎn)換為整數(shù),利用自定義比較器對(duì)字符串?dāng)?shù)組進(jìn)行排序。
輸出結(jié)果為:
apple3
orange5
banana12
以上代碼通過提取字符串中的數(shù)字部分來進(jìn)行排序,確保字符串中都包含數(shù)字。如果字符串中沒有數(shù)字,則按照普通的字典順序進(jìn)行排序。
熱問標(biāo)簽 更多>>
人氣閱讀
大家都在問 更多>>
java虛函數(shù)的作用是什么,怎么用
java讀取相對(duì)路徑配置文件怎么操...
java靜態(tài)代碼塊和構(gòu)造方法執(zhí)行順...