华为OD机试题-java-磁盘容量排序

题目大意

磁盘的容量单位有M、G、T,其关系为 1T = 1000G、1G = 1000M,如样例所示先输入磁盘的个数,再依次输入磁盘的容量大小,然后按照从小到大的顺序对磁盘容量进行排序并输出。

例如:
输入:

3
20M
1T
300G

输出:

20M
300G
1T

本人思路:
本来准备使用TreeMap 进行key 排序,但是map key 有唯一性,如果输入两个一样大小的数据,会出现数据丢失的问题。

所以决定自定义一个对象VolumInfo 进行实现
然后用list 的stream.sorted 进行排序

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;

public class Main3 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		// 接受输入的数据
		int size = Integer.parseInt(scan.nextLine());
		
		// 接受input str 放入到原始list 里面
		List<VolumInfo> volumInfos = new ArrayList<VolumInfo>();
		for (int i = 0; i < size; i++) {
			System.out.println("大小:");
			VolumInfo volumInfo = new Main3().new VolumInfo();
			
			// valueStr
			String valueStr = scan.nextLine();
			volumInfo.setValueStr(valueStr);
			
			// value
			double num = Double.parseDouble(valueStr.substring(0, valueStr.length()-1));
			if(valueStr.contains("G")) {
				num = num * 1000;
			}else if(valueStr.contains("T")) {
				num = num * 1000 * 1000;
			}
			volumInfo.setValue(num);
			
			volumInfos.add(volumInfo);
		}
		// sorted
		List<VolumInfo> sortedVolumInfos =
		volumInfos.stream().sorted(Comparator.comparing(VolumInfo::getValue))
			.collect(Collectors.toList());
		
		// output
		for(VolumInfo v: sortedVolumInfos) {
			System.out.println(v.getValueStr());
		}
	}
	
	class VolumInfo {
		private double value;
		private String valueStr;
		
		public double getValue() {
			return value;
		}
		public void setValue(double value) {
			this.value = value;
		}
		public String getValueStr() {
			return valueStr;
		}
		public void setValueStr(String valueStr) {
			this.valueStr = valueStr;
		}	
	}
}

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值