首页 > 编程语言 >java list按另一list 排序

java list按另一list 排序

时间:2022-11-15 10:33:29浏览次数:41  
标签:java String brandRFMList list io2 private BrandRFM 排序

枚举类

让list 按照枚举顺序排序

public enum DemoEnumTest {
    IMPORT_VALUE("价值客户", "1"),
    IMPORT_RECALL("唤回客户", "2"),
    IMPORT_DEEP_PLOUGHING("深耕客户", "3"),
    IMPORT_RETENTION("挽留客户", "4"),;
    private final String value;
    private final String code;
    DemoEnumTest(String value, String code) {
        this.value = value;
        this.code = code;
    }
}

创建的基础对象

@Data
public class BrandRFM {
    /**
     *  数据类型
     */
    private String dataType;
    /**
     * 数量
     */
    private String count;
    /**
     * 占比
     */
    private String pro;
    /**
     * 品牌/品类
     */
    private String type;
}
基础算法换算

public static void main(String[] args) {
        List<BrandRFM> brandRFMList = new ArrayList<>();
        BrandRFM rfm3 = new BrandRFM();
        rfm3.setCount("3465");
        rfm3.setDataType("深耕客户");
        brandRFMList.add(rfm3);
        BrandRFM rfm2 = new BrandRFM();
        rfm2.setCount("345");
        rfm2.setDataType("唤回客户");
        brandRFMList.add(rfm2);
        BrandRFM rfm = new BrandRFM();
        rfm.setCount("213");
        rfm.setDataType("价值客户");
        brandRFMList.add(rfm);
        BrandRFMEnum[] values1 = BrandRFMEnum.values();
        List<String> collect = Arrays.stream(values1).map(str -> {
                    String stre = str.getValue();
                    return stre;
                }).collect(Collectors.toList());
        System.out.println(JSON.toJSONString(collect));
        setListOrder(collect,brandRFMList);
        System.out.println(brandRFMList);
    }



    public static void setListOrder(List<String> orderRegulation, List<BrandRFM> targetList) {
        // 按照 list 里的 name 来排序 targetList
        Collections.sort(targetList, ((o1, o2) -> {
            int io1 = orderRegulation.indexOf(o1.getDataType());
            int io2 = orderRegulation.indexOf(o2.getDataType());
            if (io1 != -1) {
                io1 = targetList.size() - io1;
            }
            if (io2 != -1) {
                io2 = targetList.size() - io2;
            }
            return io2 - io1;
        }));
    }

标签:java,String,brandRFMList,list,io2,private,BrandRFM,排序
From: https://www.cnblogs.com/codefq/p/16891549.html

相关文章

  • java生成一定12位递增的流水号
    项目需求中有时需要生成一定规则递增编号。例如系统中唯一订单号组成规则可能是:机构代码+时间+12位编号。例如:000000120221115000000000001/000000120221115000000000002之......
  • 【Java】生成随机字符串
    packagecom.runsky.utils;importjava.util.Random;publicclassGetRandom{privatestaticfinalString[]GENERATE_SOURCE=newString[]{"0","1","2",......
  • Flask 学习-97.Flask-SQLAlchemy 排序 order_by()
    前言order_by()对查询结果排序按字段排序根据id字段排序,默认是正序a=Students.query.order_by(Students.id).all()print(a)使用asc()函数正序a=Student......
  • 1710. 卡车上的最大单元数 ----- 贪心算法,自定义sort排序
    请你将一些箱子装在一辆卡车上。给你一个二维数组boxTypes,其中boxTypes[i]=[numberOfBoxesi,numberOfUnitsPerBoxi]:numberOfBoxesi是类型i的箱子的数量。numb......
  • JavaScript自定义数据类型判断函数
    functionjudgeType(ele){letres=typeofele;if(res==="object"){//短路表达式,第一个成立则返回第二个的值,第一个不成立,则返回第一个的值......
  • Java注解与原理分析
    目录一、注解基础二、注解原理三、常用注解1、JDK注解2、Lombok注解四、自定义注解1、同步控制2、类型引擎五、参考源码使用的太多,被忽略的理所当然;一、注解基础注解......
  • java向kafka发送消息(生产者)
    代码如下,简单记录一下packageorg.example;importjava.util.Properties;importorg.apache.kafka.clients.producer.KafkaProducer;importorg.apache.kafka.client......
  • Java反应式编程(2)
    您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ 看了前面对反应式编程的说明,可能很多人都会打退堂鼓了。Lambda都已经够难理解的了,又来了一个反应式编程!实在卷不动了~其......
  • Java 同步锁ReentrantLock与抽象同步队列AQS
    AbstractQueuedSynchronizer抽象同步队列,它是个模板类提供了许多以锁相关的操作,常说的AQS指的就是它。AQS继承了AbstractOwnableSynchronizer类,AOS用于保存线程对象,保存什......
  • JAVA学习
    JAVA问题解决综合问题语句FILEf=newFILE("Grades.txt");在IDEA中运行时,读取的目标文件不一定是源码所在目录下的"Grades.txt",而是源码类所属的父模块中最高级的模......