• 数据表记录包含表索引和数值(int范围的整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出


    此题如果直接使用有序的TreeMap就不需要这样折腾:
    1.map的key值唯一性,故就不在需要set集合来去重
    2.使用map后利用key的唯一性,把序列号相同的数据直接加在一起,代码会很简洁

    package com.pagination.plus.workTrain;
    
    import com.alibaba.fastjson.JSON;
    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.util.*;
    
    public class Main3 {
        public static void main(String[] args) throws FileNotFoundException {
            Scanner in = new Scanner(new FileInputStream("D:\JavaData\tmp/input.txt"));
            //Scanner in = new Scanner(System.in);
    
            while (in.hasNext()) {//注意while处理多个case
                String strNum = in.nextLine();
                int count = Integer.parseInt(strNum);
                int[] k = new int[count];
                int[] v = new int[count];
    
                for (int i = 0; i < count; i++) {
                    String[] value = in.nextLine().split(" ");
                    //System.out.println(JSON.toJSONString(value));
                    k[i] = Integer.parseInt(value[0]);
                    v[i] = Integer.parseInt(value[1]);
                }
    
                Set<Integer> set = new HashSet<>();//相同的索引值只统计一次
                Map<Integer,Integer> contents = new HashMap<>();//便于排序后输出
                List<Integer> key = new ArrayList<>();
                //List<Integer> val = new ArrayList<>();
    
                //Map<Integer,Integer> map00 = new TreeMap<>();
    
                for (int i = 0; i < count; i++) {
                    if (set.add(k[i])) {
                        int tmpVal = v[i];
                        for (int j = 0; j < count; j++) {
                            if ((i != j) && (k[i] == k[j])) {
                                tmpVal += v[j];
    
                            }
                        }
                        key.add(k[i]);
                        //val.add(tmpVal);
                        contents.put(k[i],tmpVal);
                        //map00.put(k[i],tmpVal);
                        //System.out.println(k[i] + "  " + tmpVal);
                    }
                }
                //或者使用有序的TreeMap
                //System.out.println(JSON.toJSONString(map00));
                //排序
                key.sort(Integer::compareTo);
                //key.forEach(System.out::print);
                for(int i=0;i<key.size();i++){
                    int index = key.get(i);
                    System.out.println(index+" "+contents.get(index));
                }
    
    
    
    
    
            }
        }
    }
    
    
  • 相关阅读:
    AJAX
    Aliyun服务器配置Redis
    Aliyun服务器配置MySQL
    Python基础之迭代器详解
    Python基础之函数
    Flask入门--URL
    认识Web
    肖知兴:企业的底层逻辑与企业家的突破(下)
    建造者模式(Bulider模式)详解
    为什么我强烈推荐你用枚举来实现单例模式
  • 原文地址:https://www.cnblogs.com/InternetJava/p/12543188.html
Copyright © 2020-2023  润新知