initial- - - 2023-03-10 11:32 采纳率: 86.7%
浏览 42
已结题

Java排序问题当字符串部分相等时

请问在对比字符串大小时,字符串部分相同,我该怎么实现降序排列?如果我用compareTo(),它在 字符串不相同但对比部分相同时,返回字符串长度的差值,那么比如对比字符串a2,a9,a1的大小时,用它就是无效的

  • 写回答

5条回答 默认 最新

  • CodeBytes 2023-03-10 12:04
    关注

    该回答引用ChatGPT

    在 Java 中,你可以使用 Comparator 接口来实现自定义的排序规则。在这种情况下,你可以创建一个 Comparator 对象,该对象将按照你指定的排序规则对字符串进行排序。

    对于字符串的降序排列,你可以使用以下方法:

    
    
    import java.util.Comparator;
    
    public class StringDescendingComparator implements Comparator<String> {
        @Override
        public int compare(String str1, String str2) {
            // 对比字符串的部分相同部分
            String commonPart1 = str1.substring(0, Math.min(str1.length(), str2.length()));
            String commonPart2 = str2.substring(0, Math.min(str1.length(), str2.length()));
            int result = commonPart2.compareTo(commonPart1);
    
            // 如果部分相同的部分已经不同了,那么就按照字符串的长度来排序
            if (result != 0) {
                return result;
            } else {
                return Integer.compare(str2.length(), str1.length());
            }
        }
    }
    
    

    这里创建了一个名为 StringDescendingComparator 的类,它实现了 Comparator 接口。在 compare 方法中,我们首先比较了两个字符串的相同部分,如果它们不同,则返回它们之间的比较结果;否则,我们按照字符串长度的差值进行排序。这样,如果部分相同的字符串的长度相同,则较长的字符串将排在前面。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月18日
  • 已采纳回答 6月18日
  • 创建了问题 3月10日