面向对象Java PTA 7-2 集合和列表,按从小到大的顺序组合成一个字典

这题本来是Python的,但既然我们Java实验课老师出了这道题,那就变通一下吧!
参考Python原题:7-3 集合和列表,按从小到大的顺序组合成一个字典 (16 分)

题目

有二个长度一样的集合和列表,按从小到大的顺序组合成一个字典。

读了题开始怀疑出处,再看到输入样例就绷不住了。上次实验拿C++的题,这次拿Python的。不过也可以理解老师的用意,应该是不想让我们轻易在网上找到答案。但现在不就有了么!

输入格式:
输入二个长度一样的集合和列表,集合元素全部为整型,列表元素全部为字符串型。

输出格式:
组合后的字典。

输入样例:
在这里给出一组输入。例如:

{1,2,6,5,3,4}
['aa','cc','bb','d','f','e']

输出样例:
在这里给出相应的输出。例如:

{1: 'aa', 2: 'bb', 3: 'cc', 4: 'd', 5: 'e', 6: 'f'}

代码实现

注意到题目要求的排序实际上就是自然排序,故无需写Comparator了,省事。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Main {
  public static void main(String[] args) throws IOException {
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

    String input = in.readLine();
    HashSet<Integer> nums = new HashSet<>();
    // 把输入的整行字符串去除首尾花括号,再以逗号分割为字符串数组,最后遍历加入集合
    for (String i : input.substring(1, input.length() - 1).split(",")) {
      nums.add(Integer.valueOf(i));
    }

    input = in.readLine();
    List<String> strings = Arrays.asList(input.substring(1, input.length() - 1).split(","));
    // 值须排序,因为TreeMap默认以键自然排序
    Collections.sort(strings);

    CustomTreeMap dict = new CustomTreeMap();
    Iterator<Integer> i = nums.iterator();
    Iterator<String> s = strings.iterator();
    while (i.hasNext()) {
      dict.put(i.next(), s.next());
    }
    System.out.println(dict);
  }
}

/**
 * 自定义TreeMap类,仅重写了toString方法以满足输出要求
 */
class CustomTreeMap extends TreeMap<Integer, String> {
  @Override
  public String toString() {
    // 输出差异不大,简单替换就好了
    return super.toString().replace("=", ": ");
  }
}

涉及知识点

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏喵爱学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值