很不错的题目
以下答案来自chatgpt:
import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
@Slf4j
class FruitSorter {
public static void main(String[] args) {
String fruit = "34香蕉5桃子8橘子90橙子3西瓜6哈密瓜10苹果";
// 提取水果字符串中的数字和水果名称
List<Fruit> fruits = extractFruits(fruit);
// 根据数字进行排序
Collections.sort(fruits, new Comparator<Fruit>() {
@Override
public int compare(Fruit fruit1, Fruit fruit2) {
return Integer.compare(fruit1.getNumber(), fruit2.getNumber());
}
});
// 构建排序后的字符串
StringBuilder sortedFruit = new StringBuilder();
for (Fruit f : fruits) {
sortedFruit.append(f.getName()).append(f.getNumber()).append(" ");
}
// 输出结果
System.out.println("排序后的水果字符串: " + sortedFruit.toString().trim());
}
// 提取水果字符串中的数字和水果名称
private static List<Fruit> extractFruits(String fruit) {
List<Fruit> fruits = new ArrayList<>();
int i = 0;
while (i < fruit.length()) {
StringBuilder number = new StringBuilder();
while (i < fruit.length() && Character.isDigit(fruit.charAt(i))) {
number.append(fruit.charAt(i));
i++;
}
StringBuilder name = new StringBuilder();
while (i < fruit.length() && !Character.isDigit(fruit.charAt(i))) {
name.append(fruit.charAt(i));
i++;
}
int num = Integer.parseInt(number.toString());
fruits.add(new Fruit(num,name.toString()));
}
log.info(JSONUtil.toJsonStr(fruits));
return fruits;
}
// 定义水果类
private static class Fruit {
private String name;
private int number;
public Fruit(String name, int number) {
this.name = name;
this.number = number;
}
public Fruit(int number,String name) {
this.name = name;
this.number = number;
}
public String getName() {
return name;
}
public int getNumber() {
return number;
}
}
}
学到了两点:
一:和在力扣上的题目不同,他们经常new个map或者list来存数据。
但是在这里用一个list对象存数据。
二:Collections.sort:
在日常开发中,很多时候都需要对一些数据进行排序的操作。然而那些数据一般都是放在一个集合中如:Map ,Set ,List 等集合中。他们都提共了一个排序方法 sort(),要对数据排序直接使用这个方法就行,但是要保证集合中的对象是 可比较的。
怎么让一个对象是 可比较的,那就需要该对象实现 Comparable 接口啦。然后重写里面的
compareTo()方法。我们可以看到Java中很多类都是实现类这个接口的 如:Integer,Long 等等。。。
Collections.sort具体参考:https://blog.csdn.net/qq_23179075/article/details/78753136