有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

如何修复此问题/错误(如何在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 +
            '}';
}
}

共 (1) 个答案

  1. # 1 楼答案

    实际上,您正在尝试按值对映射进行排序,comparable方法或comparator只能用键来完成