题解 | #合并表记录#

合并表记录

https://www.nowcoder.com/practice/de044e89123f4a7482bd2b214a685201

import java.util.*;
import java.util.Comparator;

public class Main {


    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        Integer integer = new Integer(s);
        //传进来一个key的比较器对象来构造treemap
        MyComparator myComparator = new MyComparator();
        // 小于、等于或者大于o2分别返回负整数、0或者正整数,
        // 来决定二者存放的先后位置:返回负数则o1在前,正数则o2在前。
        Map<Integer, Integer> map = new TreeMap<>(myComparator);
//        ArrayList<String> list = new ArrayList<>();
        int num = 0;
        boolean flag = true;
        while (flag) {
            String s2 = scanner.nextLine();
            num++;
            int indexOfSpace = s2.indexOf(" ");
            Integer key = Integer.valueOf(s2.substring(0, indexOfSpace));
//            System.out.println("key值为" + key);
            Integer value = Integer.valueOf(s2.substring(indexOfSpace + 1));
//            System.out.println("value值为" + value);

//            Integer key = new Integer(String.valueOf(s2.charAt(indexOfSpace - 1)));

//            Integer value = new Integer(String.valueOf(s2.charAt(indexOfSpace + 1)));
            //价格判断条件 当key相等时 value求和
            boolean b = map.containsKey(key);
            if (b) {
                value = map.get(key) + value;
                map.remove(key);
                map.put(key, value);
            } else {
                map.put(key, value);
            }
            if (num == integer) {
                flag = false;
            }
            //对map中的key排序后输出
            //map的遍历:把key抽取出来用set存放,然后用迭代器遍历keyset,同时用map.get(KEY)获取key所对应的value。
        }
        Set<Integer> keySet = map.keySet();
        Iterator it = keySet.iterator();
        while (it.hasNext()) {
            //next就是key
            Integer next = (Integer) it.next();
            System.out.println(next + " " + map.get(next));
        }
//        list.forEach(System.out::println);
    }
}


    class MyComparator implements Comparator<Integer> {
        //定义key的比较器,比较算法根据第一个参数o1,
        // 小于、等于或者大于o2分别返回负整数、0或者正整数,
        // 来决定二者存放的先后位置:返回负数则o1在前,正数则o2在前。
        @Override
        public int compare(Integer o1, Integer o2) {
            return o1.compareTo(o2);
        }
    }

全部评论

相关推荐

08-22 10:08
中南大学 营销
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务