0

我有一张地图,我希望将一些值放在首位。

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");
-
-

我想要姓名和电子邮件作为第一个和第二个条目,我该怎么做。

4

5 回答 5

2

HashMap 不是已排序或可排序的集合。

您可以做的是将 TreeMap 与您自己的比较器一起使用。

但是,我怀疑您最好使用真正的类而不是临时地图。

于 2012-08-29T17:14:37.753 回答
0

HashMap您应该使用 a而不是使用,LinkedHashMap因为它保留了添加元素的顺序。您必须按照需要的顺序添加元素。

于 2012-08-29T17:13:44.693 回答
0

我建议您创建一个 bean,例如 Contact 或 Person,然后为此编写比较器。

因此,一旦您完成为它创建 bean 和比较器。然后

填充 bean 的列表/集合

最后做

Collection.sort(yourlist,sortByNameComparator);

Collection.sort(yourlist,sortByemailComparator);

其中 sortByNameComparator 和 sortByemailComparator 是您创建的比较器。

看看这个。它肯定会解决你的问题。

根据姓名对联系人的 ArrayList 进行排序?

上面有创建比较器的例子。

于 2012-09-08T19:16:25.753 回答
0

您可以使用树状图。构造函数接受一个比较器。

您可以传递自己的比较器实现,您可以在其中实现对地图中的数据进行排序的逻辑。

于 2012-08-29T17:14:29.553 回答
-1

根据您的使用情况,您可能想要使用 a 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;}
}
于 2012-08-29T17:17:30.353 回答