Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有序列表映射的Java实现_Java_List_Map - Fatal编程技术网

有序列表映射的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

我想知道是否有一个类实现了Java中的
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);