zoukankan      html  css  js  c++  java
  • 数据表记录包含表索引和数值(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));
                }
    
    
    
    
    
            }
        }
    }
    
    
  • 相关阅读:
    【WP开发】WebView控件应用要点
    【WP开发】认清“不透明度”与“可见性”的区别
    分享:自学编程的方法
    <C#>找出数组中重复次数最多的数值
    【WP 8.1开发】上下文菜单
    【WP 8.1开发】同时更新多种磁贴
    【WP开发】如何处理溢出的文本
    lnmp/nginx系统真正有效的图片防盗链完整设置详解
    PHP自动加载SPL的四种处理方式
    算法笔记-判断链表保存的字符串是否是回文
  • 原文地址:https://www.cnblogs.com/InternetJava/p/12543188.html
Copyright © 2011-2022 走看看