猿问

使地图不按任意顺序打印水果,而是按从最低到最高的顺序打印

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


****水果商店.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


烙印99
浏览 97回答 2
2回答

守着星空守着你

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

犯罪嫌疑人X

您可以使用LinkedHashMap,并确保按照从最低到最高的顺序将水果插入到地图中,因为它维护插入顺序,这与常规HashMap不同。即换行:fruitPricesMap&nbsp;=&nbsp;new&nbsp;HashMap<>();对此:fruitPricesMap&nbsp;=&nbsp;new&nbsp;LinkedHashMap<>();
随时随地看视频慕课网APP

相关分类

Java
我要回答