2013-03-23 51 views
1

好吧,我确定这个必须存在于这里某处,但我似乎无法找到它。根据字符串的最小字符串#CompareTo

是存在的,如果有什么,最小的(非空)String根据String#CompareTo序列?我想"",但我不完全确定。

+0

做ü意味着的String.Empty; ? – Mikatsu 2013-03-23 21:02:48

+0

@Mikatsu那是什么? – ddmps 2013-03-23 21:05:43

+0

string.Empty是长度为0的字符串 – Mikatsu 2013-03-23 21:10:35

回答

1

鉴于String#compareTo(请参阅source)的实现,您可以验证大小为0的字符串(因此为空字符串)总是低于或等于任何其他非空字符串。 (等于与空字符串比较的情况)。

0

没有最小长度,因为你可以有效地比较两个空字符串与"".compareTo("")

+2

长度不能小于0所以“”实际上是最小长度,不是? – ddmps 2013-03-23 21:04:53

+1

是的,我认为这是隐含的。即除了字符串的最小长度之外,此特定操作没有最小长度序列 – HXCaine 2013-03-23 21:08:15

+1

这不回答问题。我没有要求最小长度,我按照词典顺序要求最小字符串。 – Jeff 2013-03-23 21:26:13

0

是的,它是一个空字符串,在它没有价值。

看看此示例代码:

String str = ""; 
str.compareTo(""); 
+1

虽然这显然有正确的答案,这个例子并不真的证明... – Jeff 2013-03-23 21:27:34

0

是最小长度的字符串将是一个空字符串“”用0。我不认为一个长度会有长度为这样的字符串小于0.

+1

这并不回答这个问题。我没有要求最小长度,我按照词典顺序要求最小字符串。 – Jeff 2013-03-23 21:26:58

1

编辑:

试试这个,

String s=""; 
     String s1=new String(new char[-2]); // Here you will get NagativeArraySize Exception 
    System.out.println(s1.compareTo(s)); 

这里的compareTo中的System.out.println()返回任何内容,所以最小的字符串将是 “” 或的String.Empty


AFAIK,没有最小长度,并且找不到长度为< 0的字符串,所以字符串0的最小长度(严格g.Empty或“”)。

检查的CompareTo此源代码,

public int compareTo(String anotherString) { 
     int len1 = count;  // original string count 
     int len2 = anotherString.count; // comparision string count 
     int n = Math.min(len1, len2);  
     char v1[] = value; 
     char v2[] = anotherString.value; 
     int i = offset; 
     int j = anotherString.offset; 

     if (i == j) { 
      int k = i; 
      int lim = n + i; 
      while (k < lim) { 
       char c1 = v1[k]; 
       char c2 = v2[k]; 
       if (c1 != c2) { 
        return c1 - c2; 
       } 
       k++; 
      } 
     } else { 
      while (n-- != 0) { 
       char c1 = v1[i++]; 
       char c2 = v2[j++]; 
       if (c1 != c2) { 
        return c1 - c2; 
       } 
      } 
     } 
     return len1 - len2; 
    } 
+0

我并不是要求最小长度,而是要求+1的代码来回答问题。 – Jeff 2013-03-23 21:30:02