treeset将SO10和SO9排序
时间: 2024-02-11 16:07:23 浏览: 85
在TreeSet中,元素的排序是按照元素的自然顺序进行的。对于字符串类型的元素,按照字典序进行比较,即从左到右逐个字符进行比较。因此,如果要将"SO10"和"SO9"进行排序,需要自定义比较器。
示例代码如下:
```java
TreeSet<String> set = new TreeSet<>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
String prefix1 = o1.substring(0, o1.length() - 2);
String prefix2 = o2.substring(0, o2.length() - 2);
int cmp = prefix1.compareTo(prefix2);
if (cmp != 0) {
return cmp;
}
int num1 = Integer.parseInt(o1.substring(o1.length() - 2));
int num2 = Integer.parseInt(o2.substring(o2.length() - 2));
return Integer.compare(num1, num2);
}
});
set.add("SO10");
set.add("SO9");
System.out.println(set); // 输出:[SO9, SO10]
```
这里自定义了一个比较器,在比较时先比较字符串的前缀,如果前缀相同,则比较字符串的最后两个字符表示的数字大小。按照这种方式进行比较,"SO9"会排在"SO10"的前面,因此输出结果为[SO9, SO10]。
阅读全文