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_Treemap_Comparable_Nested Map - Fatal编程技术网

如何在java中根据商品价格对嵌套映射进行比较和排序?

如何在java中根据商品价格对嵌套映射进行比较和排序?,java,sorting,treemap,comparable,nested-map,Java,Sorting,Treemap,Comparable,Nested Map,如何修复此问题/错误(如何在java中对嵌套树映射进行排序) 当我尝试使用物品价格对地图进行排序时,它不起作用,因为TreeMap根据键按自然顺序排序,但我需要使用内部地图键对其进行排序。谁能帮帮我 public class SortedTest { private static Map<Integer, Map<Item, Integer>> tm = new TreeMap<>(); public static void main(String[] a

如何修复此问题/错误(如何在java中对嵌套树映射进行排序) 当我尝试使用物品价格对地图进行排序时,它不起作用,因为TreeMap根据键按自然顺序排序,但我需要使用内部地图键对其进行排序。谁能帮帮我

public class SortedTest {

private static Map<Integer, Map<Item, Integer>> tm = new TreeMap<>();

public static void main(String[] args) {
    Item item = new Item("beer", 1, 5.0);
    Item item1 = new Item("tofu", 2, 3.5);
    Item item2 = new Item("ic", 3, 3.2);
    Item item3 = new Item("mg", 4, 4.5);


    tm.put(item.getId(), new TreeMap<>());
    tm.get(item.getId()).put(item, 3);

    System.out.println(tm);

    tm.put(item1.getId(), new TreeMap<>());
    tm.get(item1.getId()).put(item1, 3);
    System.out.println(tm);

  } 
}
package trial;


public class Item implements Comparable<Item> {
private String name;
private Integer id;
private Double price;

// constructor, setter & getter

@Override
public int compareTo(Item o) {
    if (getPrice() > o.getPrice()) {
        return 1;
    }
    if (price < o.getPrice()) {
        return -1;
    }
    return 0;
}

@Override
public String toString() {
    return "Item{" +
            "name='" + name + '\'' +
            ", id=" + id +
            ", price=" + price +
            '}';
}
}
公共类分类测试{
私有静态映射tm=newtreemap();
公共静态void main(字符串[]args){
项目=新项目(“啤酒”,1,5.0);
项目1=新项目(“豆腐”,2,3.5);
项目2=新项目(“ic”,3,3.2);
项目3=新项目(“mg”,4,4.5);
tm.put(item.getId(),new TreeMap());
get(item.getId()).put(item,3);
系统输出println(tm);
put(item1.getId(),newtreemap());
get(item1.getId()).put(item1,3);
系统输出println(tm);
} 
}
一揽子试验;
公共类项实现了可比性{
私有字符串名称;
私有整数id;
私人双价;
//构造函数、setter和getter
@凌驾
公共整数比较(o项){
如果(getPrice()>o.getPrice()){
返回1;
}
如果(价格
实际上,您正在尝试按值对地图进行排序,comparable方法或comparator只能用键进行排序。

为什么要使用地图地图?您正在按价格对每个内部地图进行排序。按价格订购外部地图会是什么样子?我不知道,如果你能帮助我,你会很好,无论如何谢谢你的努力。我的要求是我需要使用内部地图进行排序,即外部地图的值,谢谢你的努力:)请看一下ValueComparator