Java基础例题-字符串先比大小再比字母顺序

 每个项目有一定的分值,先按分值大小排序;若分数相同,则按照字母顺序排序。

1、首先是明确要使用arrays的sort方法

根据顺序对指定的对象数组进行排序

在Java中,<? super T>是一种通配符泛型类型参数,表示“T的超类”。这意味着c参数所代表的Comparator对象可以接受类型为T或者T的超类的对象作为比较的参数。换句话说,这允许我们使用实现了T类型或其父类的Comparator进行排序操作。这样设计的好处是可以增加方法的灵活性和通用性,使得不同类型的比较器都可以被传入并使用。

2、如何使用数据:

比如有三个字符串,s1、s2、s3,每个字符串对应了一个数值;而我们要给字符串排序,因此我们定义一个整数对象数组。此外,我们还应该做一个字符串数组和一个存放字符串数值的整数数组。

3、如何写comparator,如何排序:

  • 数值不相等,按照数值排序;
  • 数值相等,按照字符顺序排序,str[i1].compareTo(str[i2])

 comparator的详细用法:

Java 数组排序 sort,Comparator实现排序/学生身高体重排序 /-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/weixin_45600395/article/details/134786785?spm=1001.2014.3001.5501

4、实际代码

import java.util.*;

public class NumCharSort {

    public static void main(String[] args) {

        String [] str = {"sha","cha","cala"};

        int [] num = {5,5,5};

        Integer[] indices = new Integer[3];

        for (int i = 0; i < 3; i++) {

        indices[i] = i;}

        Arrays.sort(indices,new Comparator<Integer>(){

            public int compare(Integer i1, Integer i2) {

                if (num[i1] != num[i2]) {

                    return num[i1]-num[i2]; //按照数值大小排序

                }else{

                    return str[i1].compareTo(str[i2]);//否则按照字符顺序排序

                }

            }

        }

        );

       

        for(int i=0;i<3;i++){

            System.out.println(str[indices[i]]);

        }     

    }

}

  • 23
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值