仓库新进了几批物资,只知道每批物资的数量和单价,请编写程序,按照每种物资的总价值,由高到低次序输出。
输入说明:第1行一个整数N,表明物资的批次数量
第2-N+1行,每批物资的类别、数量及单价,中间用空格隔开,其中类别用A-Z加以区分。
输出说明:按物资价值降序输出排序结果,每行输出一种物资。
输入样例: 5
A 5 10.00
B 3 2.00
A 5 8.00
B 3 2.50
C 10 3.50
输出样例:A:90.0
C:35.0
B:13.5
import java.util.*;
public class 物资价值降序输出排序 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int N = in.nextInt(); //物资的批次数量
HashMap<String,Float> map = new HashMap<>();
for (int i = 0; i < N; i++) {
String key = in.next();
int num = in.nextInt();
float price = in.nextFloat();
float value = num * price;
if (map.get(key) != null) {
value = value + map.get(key);
}
map.put(key,value);
}
//将map集合转换为List
List<Map.Entry<String,Float>> list = new ArrayList<>(map.entrySet());
//使用list.sort()排序
list.sort(new Comparator<Map.Entry<String, Float>>() {
@Override
public int compare(Map.Entry<String, Float> o1, Map.Entry<String, Float> o2) {
return o2.getValue().compareTo(o1.getValue());
}
});
for (Map.Entry<String,Float> m : list) {
System.out.println(m.getKey() + ":" + m.getValue());
}
}
}