我需要将元素放入 Map 中,我选择了 TreeMap 实现,键将按升序排列在 map 中,但其中一个“未分配”的键应始终位于第一个。这可能吗 ? 我当前的代码只对元素进行排序?
public class TreeMapTest {
public static void main(String args[]){
//the treemap sorts by key
Map<String, String> hm = new TreeMap<String, String>(new StringComparator());
//add key-value pair to TreeMap
hm.put("carrot","12");
hm.put("apple", "34");
hm.put("domboi","912");
hm.put("unassigned","?");
hm.put("banana", "45");
hm.put("zucchini","87");
System.out.println("TreeMap Entries:");
System.out.println(hm);
}
}
class StringComparator implements Comparator<String>{
@Override
public int compare(String str1, String str2) {
return str1.compareTo(str2);
}
}
当前输出为
{apple=34, banana=45, carrot=12, domboi=912, unassigned=?, zucchini=87}
我想要输出为
{unassigned=?,apple=34, banana=45, carrot=12, domboi=912,zucchini=87}
最佳答案
为此只需更改您的比较器
:
class StringComparator implements Comparator<String> {
@Override
public int compare(String str1, String str2) {
if (str1.equals(str2)) {
return 0;
} else if ("unassigned".equals(str1)) {
return -1;
} else if ("unassigned".equals(str2)) {
return 1;
}
return str1.compareTo(str2);
}
}
输出:
TreeMap Entries:
{unassigned=?, apple=34, banana=45, carrot=12, domboi=912, zucchini=87}
关于java - 在 TreeMap 中的特定索引处插入键值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37466148/