String类型的大小比较?

Code定义为String类型,现在如何让它们以顺序排列
img

Collections.sort(list, (o1, o2) -> o1.getCode.compareTo(o2.getCode));

这是根据ascii码大小比较的。

String的compareTo其实就是依次比较两个字符串ASC码。如果两个字符的ASC码相等则继续后续比较,否则直接返回两个ASC的差值。如果两个字符串完全一样,则返回0。来看一下代码。

public int compareTo(String anotherString) {
    int len1 = count;
    int len2 = anotherString.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];
            //如果两个字符的ASC不相同,则直接返回
if (c1 != c2) {
                return c1 - c2;
            }
            k++;
        }
    } else {
        while (n-- != 0) {
           char c1 = v1[i++];
           char c2 = v2[j++];
             //如果两个字符的ASC不相同,则直接返回
           if (c1 != c2) {
               return c1 - c2;
           }
        }
    }
    //如果都一样,返回两个字符串的长度差
    return len1 - len2;
    }

需要进行排序的字符串
String[] array = new String[] { “lalala”, “zhangsan”, “qiqi”, “poly”,
“wobfei” };
使用简单的循环排序,代码如下

for (int i = 0; i < array.length - 1; i++) {  
            for (int j = i + 1; j < array.length; j++) {  
                if (array[i].compareTo(array[j]) > 0) {  
                    String temp = array[i];  
                    array[i] = array[j];  
                    array[j] = temp;  
                }  
            }  
        }  

package com.eleven;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class ElevenTest {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        Collections.addAll(list,"Avdsf","C","Aa","Bsdf");
        list.sort(String::compareTo);
        System.out.println(list);
    }
}

比较的是ASC码