有序列表映射的Java实现
我想知道是否有一个类实现了Java中的有序列表映射的Java实现,java,list,map,Java,List,Map,我想知道是否有一个类实现了Java中的Map和List接口 我的数据结构主要是一个映射。我将字符串(ID)映射到Images。但是在我代码的特定部分,我需要向用户展示所有可用的IDed图像。到目前为止,唯一的方法是写下: for (String id : myMap.keySet()) { // get the image like this "myMap.get(id)" } 因此,如果有一个同时实现Map和List的类就好了,这样我就可以简单地编写: for (Image img
Map
和List
接口
我的数据结构主要是一个映射
。我将字符串(ID)映射到Image
s。但是在我代码的特定部分,我需要向用户展示所有可用的IDed图像。到目前为止,唯一的方法是写下:
for (String id : myMap.keySet()) {
// get the image like this "myMap.get(id)"
}
因此,如果有一个同时实现Map
和List
的类就好了,这样我就可以简单地编写:
for (Image img : myMap) {
// the image is img
}
有人知道这样的实现吗
编辑:在查看了答案(都是正确的,投了赞成票)后,我现在意识到我还需要对地图进行排序。当我说“排序”时,我的意思是,我希望它有一个特定顺序的值,一个我可以修改的顺序。我知道这不是最初的问题,但我刚刚意识到我需要这个
编辑2:我似乎犹豫不决。我需要的是一张有序的地图,而不是一张有序的地图。各位,很抱歉造成混乱。要查看有序地图,请查看。这样可以按插入顺序保留密钥
如果你使用一个按钮,它将保持键的排序顺序。(是最常见的实现。)
您可以使用的是map.entrySet()
。这将允许您迭代映射项集
有关更多信息,请查看。这将为您提供存储值的集合
myMap.values()
您可以使用返回集合的方法,尝试以下操作:
for (Image img : myMap.values()) {
// the image is img
}
对于排序映射,请查看实现。是最常见的选择。如果您只需要保证迭代顺序,您可以尝试。它提供的迭代顺序与将元素放入映射的顺序相同。或者,可以选择按上次访问的顺序。如果要将关键点(添加后)移动到映射的末尾,则必须显式删除它并再次放置 如果根据其键的自然顺序进行排序,或通过地图创建时提供的比较器进行排序,则可以使用:
TreeMap<String, Image> mapByName = new TreeMap<String, Image>(new ByNameComparator());
treemapmappbyname=newtreemap(newbynamecomparator());
其中,ByNameComparator()是一个比较器。或者,您可以使用values()方法,并使用Collections进行排序。sort():
Collection images=mapByName.values();
排序(图像,新的BySizeComparator());
如果您需要按特定顺序购买物品,则是您的朋友-它会按插入顺序保存物品。TreeMap将按照您给出的比较器或键的比较器方法定义的顺序保存项目。您已经得到了一系列实用的答案。但是直接回答这个问题
我想知道是否有一个类在Java中同时实现映射和列表接口
。。。值得一提的是,这根本不可能<代码>移除(对象)
方法是障碍
在Map
界面中,其签名为:
V remove(Object key);
在列表
界面中:
boolean remove(Object o);
回答得好。请查看我的编辑,因为我的问题有点变化。回答得好。请查看我的编辑,因为我的问题有点变化。回答得好。请检查我的编辑,因为我的问题有点变化。哈希映射将生成按哈希排序的值集合-这通常不是您想要的。所以按照jinguy的答案,使用树形图,然后调用values()。谢谢你的回答。请查看我的编辑,因为我的问题有点变化。谢谢。与冗长相比,我通常更喜欢简洁。不过,如果能够更改项目顺序,那就太好了:(我认为,您可以通过移除项目并再次放置,将其重新放置到地图的末尾。
boolean remove(Object o);