【问题标题】:Make Map not print Fruits in arbitrary order, but in order of least to most expensive使地图不按任意顺序打印水果,而是按从最低到最高的顺序打印
【发布时间】:2019-06-13 08:28:56
【问题描述】:

我正在尝试创建一个类来表示水果商店,并希望输出按价格排序的可用水果,从最便宜到最贵。但是,即使我按照最便宜到最贵的顺序将价格添加到我的 FruitPricesMap 中,它总是以相同的任意顺序打印水果?我怎样才能让它不这样做?

****FruitStore.java****

import java.util.*;

public class FruitStore {

    private Map<String, Double> fruitPricesMap;

    public FruitStore() {
        fruitPricesMap = new HashMap<>();
    }

    public boolean addOrUpdateFruit(String fruitName, double fruitPrice) {
        fruitPricesMap.put(fruitName, fruitPrice);
        return true;
    }

    public void printAvaliableFruit() {
        System.out.println("Avaliable Fruit:");
        for (String key : fruitPricesMap.keySet()) {
            System.out.printf("%-15s  %.2f", key, fruitPricesMap.get(key));
            System.out.println();
        }
    }

}

****FruitStoreApp.java****

public class FruitStoreApp {

    public static void main(String[] args) {
        FruitStore fs = new FruitStore();
        fs.addOrUpdateFruit("Banana", 1.00);
        fs.addOrUpdateFruit("Apple", 2.00);
        fs.addOrUpdateFruit("Cherries", 3.00);
        fs.printAvaliableFruit();
    }

}

****电流输出****

Avaliable Fruit:
Apple            2.00
Cherries         3.00
Banana           1.00 

****所需的输出(从最便宜到最昂贵):****

Avaliable Fruit:
Banana           1.00
Apple            2.00
Cherries         3.00

【问题讨论】:

标签: java dictionary hashmap


【解决方案1】:

您应该使用TreeMap 并在自定义比较器中指定您想要的顺序。

【讨论】:

    【解决方案2】:

    您可以使用 LinkedHashMap,并确保将水果按照从最低到最高的顺序插入到地图中,因为它保持插入顺序,与常规 不同HashMap.

    即换行:

    fruitPricesMap = new HashMap<>();
    

    到这里:

    fruitPricesMap = new LinkedHashMap<>();
    

    【讨论】:

      猜你喜欢
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      • 2013-05-20
      • 1970-01-01
      • 2021-03-20
      • 2019-05-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多