请将以下水果字符串按从小到大顺序排列,并将实现代码过程写下来:String fruit=“34香蕉5桃子8橘子90子3西瓜6哈密瓜10苹果“

很不错的题目
以下答案来自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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值