java - Java中应该使用哪种数据结构

标签 java data-structures computer-science

假设有“staffId”、“subject”、“sessionTime”三个变量

例子是:

<9600001, info2001, Tue3>,
<9600001, info2002, Wed4>,
<9600002, info2001, Wed2>,
<9600001, info2001, Thu9>,
<9600001, info2003, Fri10>,
<9600002, info2004, Wed4>

最终输出应该是:

STAFF_ID HOURS
 9600002 4
 9600001 7

计算:观察员工 9600001 有 4 个实际 session ,并且涉及 3 个不同的主题,所以这个 共计 4+3=7 小时。

为了解决这个问题,我决定使用嵌套的 HashMap,比如

Map<Integer, Map<String, String>> submission = new HashMap<Integer, TreeMap<String, String>>();

但问题在于,树形图会替换其先前的值,因为该值必须是唯一的。例如,当我把

<9600001, info2001, Tue3> 和 <9600001, info2001, Thu9> 进入 map ,

在hash-map中,应该有

9600001,info2001 - 周二和周四

但是之前的值被替换了,所以只有一个值存在:

9600001,info2001 - 周四

谁能告诉我如何解决这个问题?

我应该使用哪种数据结构?

最佳答案

使用 List 记录。

class Record {
  int staffId;
  String subject;
  String sessionTime;
}

List<Record> submissions = new ArrayList<>();
List

Map

class Record {
  String subject;
  String sessionTime;
}

Map<Integer, List<Record>> submissions = new HashMap<>();

关于java - Java中应该使用哪种数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47217382/

相关文章:

java - 监听器接口(interface)无法与回收器 View 中的卡片 View 的 onClick 配合使用

java - 如何在 Java 中隐藏面板

java - 什么是堆中的并发标记-清除生成?

java - 具有非常具体要求的高性能、无锁 Java 集合

data-structures - 如何连接向量元素并将其存储回向量?

c++ - 需要有关跳过列表的信息

java - 构建应用程序时出错 - 连接到 http ://ws. zone.apache.org 被拒绝

programming-languages - 我想回到 CS 的基础。对教程或注重应用的引用资料有什么建议吗?

loops - 双循环函数的时间复合体

algorithm - ∀ y ∈ R+, ∃ z ∈ R, e^z = y 用伪代码怎么写?