Code定义为String类型,现在如何让它们以顺序排列
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码