3 回答

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超3個(gè)贊
如果您使用地圖,則每個(gè)鍵都是唯一的。您不能將尺寸用作鍵,因?yàn)樗鼈儾皇俏ㄒ坏摹?/p>
根據(jù)您的問(wèn)題描述:
我有很多雙鞋,每雙鞋都有尺碼、顏色和價(jià)格。鞋子必須按尺碼訂購(gòu)。
地圖似乎不是一個(gè)好的選擇,因?yàn)榈貓D通常沒(méi)有順序(除了SortedMap)。您需要一個(gè)可以根據(jù)特定標(biāo)準(zhǔn)排序的數(shù)據(jù)結(jié)構(gòu)。AList似乎是一個(gè)非常好的選擇。list 最常見(jiàn)的實(shí)現(xiàn)是ArrayList.
您首先需要一個(gè)類來(lái)存儲(chǔ)應(yīng)該如下所示的鞋子對(duì)象:
public class Shoe{
int size;
Color color; // Color is an enum, but it can be a String if you want to be less restrictive
int price;
public Shoe(int size, Color color, int price) {
...
}
然后你可以通過(guò)這種方式將你的鞋子存儲(chǔ)在你的列表中:
List<Shoe> shoes = new ArrayList<>();
shoes.add(new Shoe(36, Color.BLACK, 30));
shoes.add(new Shoe(36, Color.WHITE, 35));
shoes.add(new Shoe(37, Color.BLACK, 40));
shoes.add(new Shoe(38, Color.BLACK, 40));
...
一旦你的清單被填滿,你可以按尺寸訂購(gòu)它們:
shoes.sort(Comparator.comparing(Shoe::getSize));
替代方案:您可以使用相同的比較器創(chuàng)建一個(gè)TreeMap<Integer,List<Shoe>>(將鍵映射到列表以解決鍵沖突的排序映射),這樣即使您插入新鞋,它也會(huì)保持有序,但它看起來(lái)超出了您的問(wèn)題級(jí)別。

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊
為此,您可以使用 2 張地圖。第一個(gè)地圖將包含鞋子的名稱作為鍵,地圖作為值。第二張地圖 - 屬性。就像是:
Map<String, Map<String, Object>> shoes = new HashMap<>();
Map<String, Object> shoeProps = new HashMap<>();
shoeProps.put("color", "red");
shoeProps.put("size", 38);
shoeProps.put("price", 35);
shoes.put("nike", shoeProps);

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊
第一步:了解數(shù)據(jù)。
您沒(méi)有一張數(shù)據(jù)地圖,您有數(shù)據(jù)地圖的層次結(jié)構(gòu)。
上圖:將鞋碼映射到“細(xì)節(jié)”圖
詳細(xì)信息圖:將顏色映射到價(jià)格
添加回答
舉報(bào)