![](/img/trans.png)
[英]Is there any difference in optimization between integer and string comparison?
[英]Get integer difference between string just like strcmp
我只需要一個函數,對於兩個給定的字符串,將返回負值,正值或零值。 在C中,使用strcmp
:
char* a = "Hello";
char* b = "Aargh";
strcmp(a, b); //-1
strcmp(a, a); //0
strcmp(b, a); //1
Java是否有任何簡單直觀的方法來執行此操作,還是必須使用Comparator
接口?
Java是否有任何簡單直觀的方法來做到這一點?
是的,它可以: java.lang.String
使用compareTo
函數實現Comparable<String>
接口:
int comparisonResult = a.compareTo(b);
還有一個不區分大小寫的版本:
int comparisonResult = a.compareToIgnoreCase(b);
String.compareTo方法是Java中使用的方法。
如何使用它 :
import java.lang.*;
public class StringDemo {
public static void main(String[] args) {
String str1 = "tutorials", str2 = "point";
// comparing str1 and str2
int retval = str1.compareTo(str2);
// prints the return value of the comparison
if (retval < 0) {
System.out.println("str1 is less than str2");
}
else if (retval == 0) {
System.out.println("str1 is equal to str2");
}
else {
System.out.println("str1 is greater than str2");
}
}
}
輸出:
str1 is less than str2
示例取自: http : //www.tutorialspoint.com/java/lang/string_compareto.htm
那compareTo
呢?
int value = a.compareTo(b);
您可以使用compareTo,但是如果您想安全的話,還應該包括一個空檢查:
if (a != null){
result = a.compareTo(b);
} else {
//decide what to do here
}
正如先前的回答,Java具有內置的String.compareTo(String anotherString)
方法,您應該簽出運行時源(應在google中搜索rt.jar )。
但是,這是一個工作示例,對compareTo
方法應用了相同的邏輯。
public static int stringCompare(String str1, String str2) {
char[] charArray1 = str1.toCharArray();
char[] charArray2 = str2.toCharArray();
int lim = Math.min(charArray1.length, charArray2.length);
int k = 0;
while (k < lim) {
if (charArray1[k] != charArray2[k]) {
return charArray1[k] - charArray2[k];
}
k++;
}
return charArray1.length - charArray2.length;
}
public class StringCmp1 {
public static void main(String[] args) {
String str1 = "aa";
String str2 = "ad";
System.out.println("Comparison of '" + str1 + "' and '" + str2 + "'");
System.out.println("Custom Method : " + str1.compareTo(str2));
System.out.println("Built-in Method : " + stringCompare(str2, str1));
System.out.println("\nComparison of '" + str2 + "' and '" + str1 + "'");
System.out.println("Custom Method : " + str2.compareTo(str1));
System.out.println("Built-in Method : " + stringCompare(str1, str2));
}
public static int stringCompare(String str1, String str2) {
char[] charArray1 = str1.toCharArray();
char[] charArray2 = str2.toCharArray();
int lim = Math.min(charArray1.length, charArray2.length);
int k = 0;
while (k < lim) {
if (charArray1[k] != charArray2[k]) {
return charArray1[k] - charArray2[k];
}
k++;
}
return charArray1.length - charArray2.length;
}
}
Comparison of 'aa' and 'ad'
Custom Method : -3
Built-in Method : 3
Comparison of 'ad' and 'aa'
Custom Method : 3
Built-in Method : -3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.