我在Android中遇到了一个奇怪的HashMap问题。我将值放入格式为
的hashmap中HashMap <String,String> sample = new HashMap<String,String>();
但是,假设我按以下顺序输入以下值:
sample.put("ifi1", "video1");
sample.put("ifi2", "video2");
sample.put("ifi3", "video3");
sample.put("ifi4", "video4");
sample.put("ifi5", "video5");
sample.put("ifi6", "video6");
sample.put("ifi7", "video7");
sample.put("ifi8", "video8");
sample.put("ifi9", "video9");
这只是一个与我的相似的简单例子。我的实际代码中只有一个更大的列表。但是,当我现在尝试仅打印值时,我会得到一个无序列表,如下所示:
VIDEOS: video1
VIDEOS: video3
VIDEOS: video2
VIDEOS: video5
VIDEOS: video4
VIDEOS: video7
VIDEOS: video6
VIDEOS: video9
VIDEOS: video8
实际上我希望它能产生以下列表:
VIDEOS: video1
VIDEOS: video2
VIDEOS: video3
VIDEOS: video4
VIDEOS: video5
VIDEOS: video6
VIDEOS: video7
VIDEOS: video8
VIDEOS: video9
为什么这个,任何想法?
答案 0 :(得分:23)
答案 1 :(得分:4)
您需要使用SortedMap
代替HashMap
。它将保证订单。
答案 2 :(得分:4)
在HashMap中顺序不存在。请尝试使用LinkedHashMap。 LinkedHashMap
会根据广告订单跟踪密钥,因此当您拨打getKeySet()
时,您会按照投放顺序取回密钥。
答案 3 :(得分:3)
使用LinkedHashMap
代替
答案 4 :(得分:0)
您还可以使用LinkedHashMap
以获取插入顺序的条目集合。
答案 5 :(得分:0)
寻找实现SortedMap接口的类。或者仅出于打印目的,您可以订购从带有Collections.sort的地图返回的de Set
答案 6 :(得分:0)
如果你使用Simple HashMap,那么这个类使用一些散列技术来存储值,在从列表中提取数据时它使用相同的散列技术。并且没有排序哈希函数。这就是结果无序的原因。 在Placed of HashMap中,您必须使用LinkedHashMap使其成为有序List。
答案 7 :(得分:0)
LinkedHashMap<T, T>
保持插入顺序