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不接受自定义比较器或自定义哈希函数。