Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/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_Sorting_Hashmap_Comparator_Comparable - Fatal编程技术网

Java 根据用户定义的标准对地图进行排序?

Java 根据用户定义的标准对地图进行排序?,java,sorting,hashmap,comparator,comparable,Java,Sorting,Hashmap,Comparator,Comparable,我有一个地图,我想在上面有一些值 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"); - - HashMap hm=newhashmap

我有一个地图,我想在上面有一些值

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");
-
-
HashMap hm=newhashmap();
hm.put(“电话号码”,“998291829”);
hm.put(“地址”,“12 A街”);
hm.put(“姓名”、“罗伯特·辛格”);
hm.put(“电子邮件”)robert@gmail.com");
-
-

我想要姓名和电子邮件作为第一个和第二个条目,我如何才能做到这一点。

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

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


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

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

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


但是,我怀疑您最好使用一个真正的类,而不是一个特殊的映射。

根据您的使用情况,您可能希望使用一个
列表,其中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;}
}
公共类对{
私钥;
私人K值;
公共对(J键,K值){
this.key=key;
这个值=值;
}
public J getKey(){return key;}
公共K getValue(){return value;}
}

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

所以,一旦您完成了为它创建bean和比较器。然后

填充bean的列表/集合

最后,我们要做什么

Collection.sort(yourlist,sortbynameparator)

Collection.sort(yourlist、sortByMailComparator)

其中,sortByNameComparator和SortByMailComparator是您创建的比较器

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


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

您希望项目按照插入的方式进行排序吗?我知道他希望按照特定的顺序进行排序。实际上没有值和键来自caouchdb,我必须用这张地图在u.i.上显示,其中key是标签,value是标签旁边的值。@VikastjavaDeveloper然后你应该遵循Peter Lawrey的建议:创建一个具有“name”、“email”等属性的类,然后你用数据填充它,你可以很容易地在你的UI中显示它。@Dan我在这里学到的一点是,OP不会(总是)写出真正的问题,而是他/她试图应用的解决方案的问题:)。这对OP解决当前的问题有什么帮助?如果有人需要使用快速且良好的
get
方法,那么使用此列表将变得毫无用处。出于性能原因,我不建议使用treemap。对于这种情况,带有自定义比较器be ok.linkedhashmap的linkedhashmap不接受自定义比较器或自定义哈希函数。