我有一张地图,其中我想要一些价值观点。
HashMap<String,String> hm = new HashMap<String,String>();
hm.put("Phone Number","998291829");
hm.put("Address","12 A Street");
hm.put("Name","Robert Singh");
hm.put("Email","robert@gmail.com");
-
-
我希望姓名和电子邮件作为第一个和第二个条目,我该怎么做。
答案 0 :(得分:2)
HashMap不是已排序或可排序的集合。
您可以做的是将TreeMap与您自己的比较器一起使用。
但是,我怀疑你最好不要使用真正的类而不是ad-hoc Map。
答案 1 :(得分:0)
您应该使用HashMap
而不是使用LinkedHashMap
,因为它会保留添加元素的顺序。您必须按照需要的顺序添加元素。
答案 2 :(得分:0)
您可以使用树形图。构造函数接受比较器。
您可以传递自己的比较器实现,您可以在其中实现在地图中对数据进行排序的逻辑。
答案 3 :(得分:0)
我建议您创建一个bean,例如联系人或人,然后为此编写比较器。
所以一旦你完成了为它创建bean和比较器。然后
填充bean的列表/集合
并且最后做了
Collection.sort(yourlist,sortByNameComparator);
Collection.sort(yourlist,sortByemailComparator);
其中sortByNameComparator和sortByemailComparator是您创建的比较器。
看看这个。它肯定会解决你的问题。
Sorting an ArrayList of Contacts based on name?
以上是创建比较器的例子。
答案 4 :(得分:-1)
根据您的使用情况,您可能需要使用List<Pair>
,其中Pair类似
public class Pair<J,K> {
private J key;
private K value;
public Pair(J key, K value) {
this.key = key;
this.value = value;
}
public J getKey() {return key;}
public K getValue() {return value;}
}