【问题标题】:Find max of arraylist查找数组列表的最大值
【发布时间】:2018-09-13 12:11:13
【问题描述】:

我在我的 ArrayList 中使用以下数据:

我想知道如何在下面类似的一对中获得市场名称的最大百分比

感谢您的帮助。

【问题讨论】:

  • 基本上你想得到每个市场名称,条目应该根据正确的百分比排序,就像 Liqui 有三个条目,所以百分比 0.52 应该首先出现,然后是 0.59,然后是 0.65,然后是 0.73。我理解正确吗?
  • 另外,请与我们分享您的代码,以便我们了解您到目前为止所做的尝试。
  • 在 ETH/BTC 对中,找到 Bitrex、Liqui、Yobit 的最大值。在 LTC/BTC 对中找到最大的 Bitrex、Liqui、Yobit。我还没有写代码。
  • 知道了...我可以写一些东西给你,但为了简单起见,我现在将把上面的数据硬编码在一个数组中,但在你的情况下,你将从上面的 excel 中解析它文件..

标签: java algorithm arraylist


【解决方案1】:

以下是逻辑:

  1. 创建一个 TreeMap,它将根据 pair 对键进行排序。
  2. 使用 pair 和 marcketName 的组合作为键和
    1. 如果该键不存在,则将其放入 Map
    2. else 如果当前值更大,则检查存储值替换 更大。
  3. 循环遍历 TreeMap 并打印所需的结果。

    public class FindMaxArrayList {
    
     public static void main(String[] args) {
    
        List<Marcket> marcketList=new ArrayList<>();
        Map<String,Double> maxofArrayList=new TreeMap<>();
    
        // Create Sample Data
        Marcket m1=new Marcket("BitTrex", "ETH/BTC",0.518);marcketList.add(m1);
        Marcket m2=new Marcket("Liqui", "ETH/BTC",0.658);marcketList.add(m2);
        Marcket m3=new Marcket("Yobit", "ETH/BTC",0.658);marcketList.add(m3);
        Marcket m4=new Marcket("BitTrex", "ETH/BTC",0.618);marcketList.add(m4);
        Marcket m5=new Marcket("Liqui", "ETH/BTC",0.458);marcketList.add(m5);
        Marcket m6=new Marcket("Yobit", "ETH/BTC",0.758);marcketList.add(m6);
    
    
        Marcket m11=new Marcket("BitTrex", "LTC/BTC",0.818);marcketList.add(m11);
        Marcket m12=new Marcket("Liqui", "LTC/BTC",0.458);marcketList.add(m12);
        Marcket m13=new Marcket("Yobit", "LTC/BTC",0.758);marcketList.add(m13);
        Marcket m14=new Marcket("BitTrex", "LTC/BTC",0.518);marcketList.add(m14);
        Marcket m15=new Marcket("Liqui", "LTC/BTC",0.858);marcketList.add(m15);
        Marcket m16=new Marcket("Yobit", "LTC/BTC",0.958);marcketList.add(m16);
    
    
        //Processing List 
        for(Marcket m:marcketList) {
            if(maxofArrayList.containsKey(m.getPair()+":"+m.getMarcketName())) {
                if(maxofArrayList.get(m.getPair()+":"+m.getMarcketName())<m.getPercentage()){
                    maxofArrayList.put(m.getPair()+":"+m.getMarcketName(), m.getPercentage());
                }
            }else {
                maxofArrayList.put(m.getPair()+":"+m.getMarcketName(), m.getPercentage());
            }
        }
    
        //Printing List
        for(String key:maxofArrayList.keySet()) {
            String[] content=key.split(":");
            System.out.println(content[1]+"\t"+content[0]+"\t"+maxofArrayList.get(key));
        }
    }
    }
    
    class Marcket{
    
    private String marcketName;
    private String pair;
    private double percentage;
    
    public Marcket(String marcketName, String pair, double percentage) {
        this.marcketName = marcketName;
        this.pair = pair;
        this.percentage = percentage;
    }
    public String getMarcketName() {
        return marcketName;
    }
    public void setMarcketName(String marcketName) {
        this.marcketName = marcketName;
    }
    public String getPair() {
        return pair;
    }
    public void setPair(String pair) {
        this.pair = pair;
    }
    public double getPercentage() {
        return percentage;
    }
    public void setPercentage(float percentage) {
        this.percentage = percentage;
    }
    }
    

【讨论】:

  • 请 1) 解释您的解决方案及其工作原理,而不仅仅是转储代码,以及 2) 正确格式化您的代码。
猜你喜欢
  • 1970-01-01
  • 2015-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-15
  • 2012-08-14
相关资源
最近更新 更多