java 对list 多条数据,按1 、1.1 1.2 1.3 、2 2.1 2.2 重新排序
时间: 2023-12-15 20:05:05 浏览: 28
可以使用Java的Collections.sort()方法来对List进行自定义排序。具体实现可以按照以下步骤进行:
1. 定义一个Comparator接口的实现类,用于比较两个元素的大小;
2. 在比较方法中,将元素按照要求的顺序进行比较,并返回比较结果;
3. 使用Collections.sort()方法对List进行排序,传入自定义的Comparator实现类即可。
下面是一个示例代码,可以按照“1 、1.1 1.2 1.3 、2 2.1 2.2”的方式进行排序:
```java
import java.util.Comparator;
import java.util.List;
import java.util.Collections;
public class SortList {
public static void main(String[] args) {
List<String> list = getList(); // 获取原始List数据
Collections.sort(list, new MyComparator()); // 使用自定义的Comparator进行排序
System.out.println(list); // 输出排序后的List数据
}
private static List<String> getList() {
// 返回一个包含原始数据的List
return Arrays.asList("2.1", "1.2", "1.1", "1.3", "2.2", "1", "2");
}
private static class MyComparator implements Comparator<String> {
@Override
public int compare(String o1, String o2) {
// 将字符串转换为数组,按照"."进行分割
String[] s1 = o1.split("\\.");
String[] s2 = o2.split("\\.");
int len1 = s1.length;
int len2 = s2.length;
// 比较第一个元素
int cmp = s1[0].compareTo(s2[0]);
if (cmp != 0) {
return cmp;
}
// 按照长度进行循环比较
int len = Math.min(len1, len2);
for (int i = 1; i < len; i++) {
cmp = s1[i].compareTo(s2[i]);
if (cmp != 0) {
return cmp;
}
}
// 长度不同时,长度短的排在前面
return len1 - len2;
}
}
}
```
输出结果为:[1, 1.1, 1.2, 1.3, 2, 2.1, 2.2]。