Java机试题:合并表记录(使用java8解题)
2022/1/3 12:07:45
本文主要是介绍Java机试题:合并表记录(使用java8解题),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
数据表记录包含表索引和数值(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。
import java.util.*; import java.util.stream.Collectors; public class Main { public static class Record { private int key; private int value; public int getKey() { return key; } public void setKey(int key) { this.key = key; } public int getValue() { return value; } public void setValue(int value) { this.value = value; } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = Integer.valueOf(sc.nextLine()); List<Record> list = new ArrayList<Record>(); for (int n = 0; n < num; n++) { String str = sc.nextLine(); String[] strs = str.split(" "); int key = Integer.valueOf(strs[0]); int value = Integer.valueOf(strs[1]); Record record = new Record(); record.setKey(key); record.setValue(value); list.add(record); } // 进行分组 Map<Integer, List<Record>> map = list.stream().collect(Collectors.groupingBy(o -> o.getKey())); // 遍历map输出 List<Record> ret = new ArrayList<Record>(); for (Map.Entry<Integer, List<Record>> entry : map.entrySet()) { Record record = new Record(); record.setKey(entry.getKey()); // 分组后求和 record.setValue(entry.getValue().stream().mapToInt(o-> o.getValue()).sum()); ret.add(record); } // 按key升序输出 ret = ret.stream().sorted(((o1, o2) -> o1.getKey() - o2.getKey())).collect(Collectors.toList()); for (Record record : ret){ System.out.println(record.getKey() + " " + record.getValue()); } } }
这篇关于Java机试题:合并表记录(使用java8解题)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-102025 蛇年,J 人直播带货内容审核团队必备的办公软件有哪 6 款?
- 2025-01-10高效运营背后的支柱:文档管理优化指南
- 2025-01-10年末压力山大?试试优化你的文档管理
- 2025-01-10跨部门协作中的进度追踪重要性解析
- 2025-01-10总结 JavaScript 中的变体函数调用方式
- 2025-01-10HR团队如何通过数据驱动提升管理效率?6个策略
- 2025-01-10WBS实战指南:如何一步步构建高效项目管理框架?
- 2025-01-10实现精准执行:团队协作新方法
- 2025-01-10如何使用工具提升活动策划团队的工作效率?几个必备工具推荐
- 2025-01-10WiX 标签使用介绍:打造专业安装程序的利器