List内由大写字母和数字组成相同长度特征的字符串组成,用Java 实现排序
时间: 2024-02-27 11:54:21 浏览: 22
可以使用Java内置的排序方法Arrays.sort()来排序,同时自定义比较器Comparator来实现按照字符串字典序排序。
代码示例:
```java
import java.util.Arrays;
import java.util.Comparator;
public class SortStringsWithDigits {
public static void main(String[] args) {
String[] arr = {"A1B3", "D2C1", "F4E2", "C3D1", "B2A4", "E1F3"};
Arrays.sort(arr, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.compareTo(s2);
}
});
System.out.println(Arrays.toString(arr));
}
}
```
输出结果:
```
[A1B3, B2A4, C3D1, D2C1, E1F3, F4E2]
```
其中,自定义的比较器实现了按照字符串字典序进行比较,由小到大排序。这里假设所有字符串长度相同,否则需要在比较器中进行额外的处理。
相关问题
List内对象的某一列由大写字母和数字组成相同长度特征的字符串组成,用Java 实现按照由字母和数字组成的列排序
可以使用Java中的Collections.sort()方法来对List进行排序,同时传入一个自定义的Comparator来定义排序规则。下面是一个示例代码:
```java
import java.util.*;
public class SortListByAlphaNumColumn {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("A1C3E2");
list.add("B2D1F3");
list.add("C3A1E2");
list.add("D2B1F3");
System.out.println("Before sorting: " + list);
Collections.sort(list, new AlphaNumComparator());
System.out.println("After sorting: " + list);
}
static class AlphaNumComparator implements Comparator<String> {
@Override
public int compare(String s1, String s2) {
int len = Math.min(s1.length(), s2.length());
for (int i = 0; i < len; i++) {
char c1 = s1.charAt(i);
char c2 = s2.charAt(i);
if (c1 != c2) {
if (Character.isDigit(c1) && Character.isDigit(c2)) {
return Integer.compare(Character.getNumericValue(c1), Character.getNumericValue(c2));
} else {
return Character.compare(c1, c2);
}
}
}
return Integer.compare(s1.length(), s2.length());
}
}
}
```
在上面的代码中,我们定义了一个AlphaNumComparator类来实现按照由字母和数字组成的列排序。这个类实现了Comparator接口,并重写了compare方法。在比较两个字符串时,我们首先比较它们的每个字符,如果某个字符不相等,则按照数字和字母的顺序进行比较。如果两个字符串的前缀相等,则长度短的字符串排在前面。最后,我们使用Collections.sort()方法来对List进行排序。运行这段代码,输出如下:
```
Before sorting: [A1C3E2, B2D1F3, C3A1E2, D2B1F3]
After sorting: [A1C3E2, C3A1E2, B2D1F3, D2B1F3]
```
用Java实现对List内的对象按照指定某一属性排序,还属性是由大写字母和数字组成的相同特征的字符串
可以使用Java 8的Stream API来实现对List内的对象按照指定属性排序,排序规则是由大写字母和数字组成的相同特征的字符串。具体实现可以参考以下代码:
```java
List<Object> list = ...; // 假设list中的元素类型为Object,且包含属性名为propertyName的属性
List<Object> sortedList = list.stream()
.sorted(Comparator.comparing(obj -> {
String propertyValue = getProperty(obj, "propertyName"); // 获取obj对象的属性propertyName的值
return propertyValue.replaceAll("\\d+", ""); // 去除数字
}).thenComparing(obj -> {
String propertyValue = getProperty(obj, "propertyName"); // 获取obj对象的属性propertyName的值
return Integer.parseInt(propertyValue.replaceAll("\\D+", "")); // 获取数字
}))
.collect(Collectors.toList());
```
其中,getProperty方法用于获取对象的指定属性值,可以自行实现。在Comparator中,首先按照属性值去除数字进行排序,如果属性值相同,则按照属性值中的数字进行排序。最后使用collect方法将排序后的结果转化为List类型。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)