问题遇到的现象和发生背景
public class Computer {//创建一个电脑类
String name;
int price;
Computer(String name,int price){
this.name=name;
this.price=price;
};
void info(){
System.out.println();
};
}
public class Hash_Map {
public static void main(String[] args) {
HashMap<String,Computer> hashmap=new HashMap<String,Computer>();//Computer类里有一个String name 和int price变量
Computer c1=new Computer("联想", 8999);
Computer c2=new Computer("苹果", 9999);
Computer c3=new Computer("惠普", 3999);
Computer c4=new Computer("华硕", 4999);
Computer c5=new Computer("戴尔", 1999);
hashmap.put("1",c1);
hashmap.put("2",c2);
hashmap.put("3",c3);
hashmap.put("4",c4);
hashmap.put("5",c5);
HashMap<String,Integer> hashmap1=new HashMap<String,Integer>();
hashmap1.put("1", c1.price);
hashmap1.put("2", c2.price);
hashmap1.put("3", c3.price);
hashmap1.put("4", c4.price);
hashmap1.put("5", c5.price);
// 创建新的双链集合 只有int price属性
//不想创建这个集合,直接根据HashMap<String,Computer> hashmap=new HashMap<String,Computer>();Computer里的int 排序
Set<Map.Entry<String, Integer>> entrySet= hashmap1.entrySet();
List<Map.Entry<String,Integer>> list=new ArrayList<>(hashmap1.entrySet());//怎样将Integer替换成object的对象
//然后用下列方法在<String,Object>其中根据object的int price值排序
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>()
{
@Override //改成Comupter↓
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return o1.getValue()- o2.getValue();
}
});//给这个list集合从小到大排序
for (Map.Entry s : list)
{
System.out.println(s.getKey()+"--"+s.getValue());//打印键值和price值
}
System.out.println("最低的电脑售价为:"+list.get(0).getValue());
}
}
运行结果及报错内容
我的解答思路和尝试过的方法
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>()
{
@Override
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return o1.getValue()- o2.getValue();
}
});
在代码Collects.sort()的代码中 将new Comparator<Map.Entry<String, Integer>>中的Integer改成Object一个电脑对象,请问怎么根据Computer里的value price排序呢?
没有做出来,请各位仁兄解答一下
我想要达到的结果
现在我不想创建一个<String ,Integer>的新集合 在创建HashMap<String,Computer> hashmap=new HashMap<String,Computer>();
的条件下,直接用Set<Map.Entry<String, Object(就是Computer)>> entrySet= hashmap1.entrySet();
List<Map.Entry<String,Object(就是Computer)>> list=new ArrayList<>(hashmap1.entrySet());的代码用Collects.sort()方法排序
然后打印Object computer的price的最小值;