我必须用多个值来存储一个键,但是我的值应该是一个字符串和一个int。对于这个问题,我必须使用List、Stack、Queue或Map,我认为Map是正确的选择。
我有很多双鞋,每只鞋都有尺码、颜色和价格。这双鞋必须按尺码来定购。
我认为关键可能是鞋的大小和价值应该是颜色和价格,但我不知道如何实现这一点。
例如,我有:
一双,36码,彩色黑色,售价30元。
2双,36码,彩色白色,售价35美元
第3双,37码,彩色黑色,售价40美元
第4双,38码,彩色黑色,售价45美元
例如,如果不创建一个新的鞋类,我如何使用Map(我认为)来存储所有这些?
更新:我还可以使用SortedMap、SortedList等,在问题的第二部分,我必须添加和删除特定尺寸的鞋子。
发布于 2019-01-18 19:08:51
如果使用地图,则每个键都是唯一的。您不能使用大小作为键,因为没有唯一的。
从你的问题描述:
我有很多双鞋,每只鞋都有尺码、颜色和价格。这双鞋必须是给定购的,因为它们的尺寸不同。
地图似乎不是一个好的选择,因为地图通常是没有排序的(除了SortedMap)。您需要一个可以根据特定标准排序的数据结构。List似乎是一个很好的选择。list最常见的实现是ArrayList。
首先需要一个类来存储应该如下所示的鞋子对象:
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) {
...
}这样你就可以把鞋子放在你的单子里了:
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));
...一旦您的列表被填充,您可以按大小排序:
shoes.sort(Comparator.comparing(Shoe::getSize));替代方案:您可以使用相同的比较器创建一个TreeMap<Integer,List<Shoe>> (一个将键映射到列表以解决键冲突的排序映射),这样即使您插入了新鞋,它仍然是有序的,但它看起来超出了问题的级别。
发布于 2019-01-18 18:48:55
第一步:理解数据。
您没有一个数据映射,您的数据有一个映射层次结构。
顶部地图:将鞋子大小映射为“详细信息”地图。
详细地图:地图颜色到价格
发布于 2019-01-19 01:50:36
如果您想使用Map来存储并且密钥可能相同,请尝试使用谷歌番石榴多机
https://stackoverflow.com/questions/54259509
复制相似问题