我正在尝试创建一个代表水果商店的类,并希望输出按价格(从最低到最贵)排序的可用水果。但是,即使我按照从最便宜到最贵的顺序将价格添加到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
答案 0 :(得分:2)
您应该使用TreeMap并在自定义比较器中指定所需的顺序。
答案 1 :(得分:1)
您可以使用 LinkedHashMap ,并确保按照从最低到最昂贵的顺序将水果插入到地图中,因为它会保持插入顺序,这不同于常规的< strong> HashMap 。
即更改行:
fruitPricesMap = new HashMap<>();
对此:
fruitPricesMap = new LinkedHashMap<>();