代码编织梦想

public class WeighTest {

    public static void main(String[] args) {

        List<Pair<Node,Integer>> myList=new ArrayList<>();
        myList.add(new ImmutablePair<Node,Integer>(new Node("a"),100));
        myList.add(new ImmutablePair<Node,Integer>(new Node("b"),10));
        myList.add(new ImmutablePair<Node,Integer>(new Node("c"),30));


        TreeMap<Double,Node> weightMap=new TreeMap<>();

        for (int i = 0; i < myList.size(); i++) {

            if(weightMap.isEmpty()){
                weightMap.put(myList.get(i).getValue().doubleValue(),myList.get(i).getKey());
            }else{
                weightMap.put(myList.get(i).getValue().doubleValue()+weightMap.lastKey().doubleValue(),myList.get(i).getKey());
            }
        }


        Map<String,Integer> countMap=new HashMap<>();

        for(int i=0;i<10000;i++){
            double randomWeight = weightMap.lastKey() * Math.random();
            SortedMap<Double, Node> tailMap = weightMap.tailMap(randomWeight, false);
            Node node= weightMap.get(tailMap.firstKey());

            if(node.getName().equals("a")){
                countMap.put("a",countMap.get("a")==null?1:countMap.get("a")+1);
            }else if(node.getName().equals("b")){
                countMap.put("b",countMap.get("b")==null?1:countMap.get("b")+1);
            }else if(node.getName().equals("c")) {
                countMap.put("c", countMap.get("c") == null ? 1 : countMap.get("c") + 1);
            }
        }

        System.out.println("a====>"+countMap.get("a"));
        System.out.println("b====>"+countMap.get("b"));
        System.out.println("c====>"+countMap.get("c"));

    }
}


class Node{


    private String name;
    public Node(String name){
        this.name=name;
    }


    public String getName() {
        return name;
    }
}

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/thankyou1988/article/details/111087194

intellij 2020.3 中导入maven项目-爱代码爱编程

2020.12.12 今天想开始搞点项目,项目开始时是要先运行别人的项目才开始学习。结果发现在一开始导入的时候就吃了很多苦头。(比如把一个Maven项目当做了一个普通项目来导入,直接白忙活。) 导入别人Maven项目的步骤如下 1、 【File】 → 【New】 → 【Project from Existing Sources…】 2、找到Ma

环境变量配置-爱代码爱编程

jdk的环境变量配置 JAVA_HOME C:\dev\java classpath .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar Path %JAVA_HOME%\bin %JAVA_HOME%\jre\bin MySQL环境变量配置 MYSQL_HOME C:\Program F

java.util.Date类-爱代码爱编程

目录 一、概述 1.1、重写toString 常用方法 2.1、getTime方法 常用构造方法 一、概述 Date类表示特定的时刻,精度为毫秒。 在JDK 1.1之前, Date类还有两个附加功能。 它允许将日期解释为年,月,日,小时,分钟和秒值。 它还允许格式化和解析日期字符串。 不幸的是,这些功能的API不适合国际化。 从JD

【Java练习】求1~100中,9出现的次数-爱代码爱编程

public class Test{ public static void main(String[] args) {//1~100中,求9的个数 int i=0; int ans=0; {for(i=1;i<=100;i++) {if(i%10==9||i/10==9)//i%10

SpringBoot嵌入式Servlet容器配置修改以及注册三大组件-爱代码爱编程

SpringBoot中默认使用Tomcat作为嵌入式Servlet容器。 关于嵌入式Servlet容器,在我们曾经的传统web项目中,需要将项目打包成war包,部署在Tomcat中,并配置好Tomcat环境,将其作为容器,外部启动Tomcat就可以运行项目了。 而我们SpringBoot是无需外部启动Tomcat,使用的是自带的Tomcat。 <

JavaWeb学习日志(文件的上传与下载)-爱代码爱编程

文件上传与下载实现 尚硅谷学习笔记 文件的上传 编写表单<form action="uploadServlet" method="post" enctype="multipart/form-data"> <!-- method为post请求,encType 属性值必须为 multipart/form-data 值 -->

Django-ORM模型层语法(十二)多表查询之Q查询-爱代码爱编程

Q查询 生成多表的准备工作已经在博客[Django-ORM模型层语法(四)之多表操作准备工作]中写了,各位可以点击下方的链接,跟着操作: 多表操作的准备工作(非常重要!一定要看喔!) app01_book表 : idtitlepricepublish_datepublishs_id1红楼梦662020-02-0222聊斋1002020-02-02

Django-ORM模型层语法(十一)多表查询之F查询-爱代码爱编程

F查询 生成多表的准备工作已经在博客[Django-ORM模型层语法(四)之多表操作准备工作]中写了,各位可以点击下方的链接,跟着操作: 多表操作的准备工作(非常重要!一定要看喔!) app01_book表 : idtitlepricepublish_datepublishs_id1红楼梦662020-02-0222聊斋1002020-02-02

Tomcat日志出现乱码-爱代码爱编程

Tomcat日志出现乱码解决办法 21-Mar-2018 22:25:32.240 ��Ϣ [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina] 21-Mar-2018 22:25:32.240 ��Ϣ [main] org.a

【delphi】开发微信小程序后台控件(二)(含源代码、演示程序、控件使用帮助)-爱代码爱编程

3. 微信小程序控件属性 序号属性类型说明1AppID字符串小程序的APPID,每个小程序都有一个唯一对应的APPID。微信平台申请获得。2AppName字符串小程序名称,自己命名3AppSecret字符串小程序的密钥,每个小程序都有一个密钥,这个密钥和APPID属性对应。微信平台申请获得4Generic_BaseURL字符串Generic_BaseUR

mybatis-plus 自定义分页查询多种实现方式(注解方式+XML方式)-爱代码爱编程

方法1:xml方式传Map (优点:1.sql与java代码解耦;   2.传入多个查询条件时,可以在xml中自由定义,如添加<if test="fieldName != null"></if>, order by time desc 等) CommentMapper.java 添加代码 /** * 分页查询方

【delphi】开发微信小程序后台控件(三)(含源代码、演示程序、控件使用帮助)-爱代码爱编程

7. 微信小程序控件测试 7.1 设置参数 选择【公共功能】-【编辑控件属性】菜单,设置相关参数并保存 7.2 双击绿色运行按键或者 启动小程序功能 菜单 至此,小程序后台服务已经成功启动,可以在前端进行任何请求了。 8. 启动服务失败解决方法 如果启动小程序失败,出现如下提示:Could not add the followin