java集合自定义排序,排序的内容包含数组、英文、符号
时间: 2023-08-09 14:12:30 浏览: 102
可以使用Java中的Comparator接口来实现自定义排序。具体步骤如下:
1. 创建一个实现Comparator接口的类,该类中需要实现compare方法来定义排序规则。
2. 在compare方法中,首先判断排序的内容属于哪种类型(数组、英文、符号),然后分别进行比较排序。
3. 将排序后的结果返回。
下面是一个示例代码,演示如何对一个包含数组、英文、符号的集合进行自定义排序:
```java
import java.util.Comparator;
public class MyComparator implements Comparator<String> {
@Override
public int compare(String s1, String s2) {
// 首先判断排序的内容属于哪种类型
boolean s1IsArray = s1.startsWith("[");
boolean s2IsArray = s2.startsWith("[");
if (s1IsArray && s2IsArray) {
// 如果都是数组,按数组长度排序
int len1 = s1.length() - s1.replace(",", "").length() + 1;
int len2 = s2.length() - s2.replace(",", "").length() + 1;
return Integer.compare(len1, len2);
} else if (s1IsArray) {
// 如果只有s1是数组,排在后面
return 1;
} else if (s2IsArray) {
// 如果只有s2是数组,排在前面
return -1;
} else {
// 如果都不是数组,按字母序排序
return s1.compareTo(s2);
}
}
}
```
使用示例:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("b");
list.add("[1,2,3]");
list.add("d");
list.add("a");
list.add("[4,5]");
list.add("c");
Collections.sort(list, new MyComparator());
System.out.println(list); // [a, b, c, [4,5], [1,2,3], d]
}
}
```
在上面的示例中,我们定义了一个MyComparator类来实现自定义排序,然后使用Collections.sort方法对集合进行排序。最终的排序结果是:a、b、c、[4,5]、[1,2,3]、d。可以看到,按字母序排序的英文排在前面,按数组长度排序的数组排在后面。
阅读全文