- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有两个结构,Employee 和 Project。
type Employee struct {
ID int
Projects map[*Departments]struct{}
}
type Project struct {
ID int
}
我有一个 Company 结构,其中包含以下内容:
type Company struct {
Projects map[*Project]map[*Employee]struct{}
Employees map[*Employee]struct{}
}
给定 e *Employee
和 c *Company
(func (c *Company) getEmployeesOnSameProject(e *Employee) []*Employee { }
) 并且知道一个员工可以属于多个项目,我很难弄清楚如何让员工跨项目。
e.Projects
可能类似于 -
eProjects {
P1
P2
}
c.Projects
可能类似于 -
cProjects {
P1 {
E1
E2
}
P2 {
E1
E2
E3
E4
}
}
如果我是 E1,我如何在没有嵌套 for 循环的情况下轻松地让其他员工与我在同一项目(P1 和 P2)上工作?
最佳答案
如果我理解正确,在理想世界中,您希望能够查找“给定项目的员工”以及“给定员工的项目”?
不知道您将在其中使用此代码的上下文;例如写入多于读取,读取多于写入,空间与时间复杂度要求是什么。
如果您的目标是 O(1) 查找员工的项目和 O(1) 查找员工的项目,那么我建议创建您自己的数据结构来促进这一点。这是可以工作的最小接口(interface):
type ProjectEmployees interface {
RegisterProjectEmployee(p *Project, e *Employee)
GetEmployees(p *Project) []*Employees
GetProjects(e *Employee) []*Project
}
我没有在下面列出完整的实现,因为计算起来很简单,但是您可以使用存储 2 个映射的结构来实现此接口(interface)。
权衡是您有更大的写入/更新成本和数据重复,好处是双向查找 O(1) Project <--> Employee
.
type projecEmployeesMap struct {
pe map[*Project][]*Employee
ep map[*Employee][]*Project
}
func (p *projectEmployeesMap) RegisterProjectEmployee(p *Project, e *Employee) {
p.pe[p] = append(p.pe[p], e) // store the mapping project -> employees
p.ep[e] = append(p.ep[e], p) // store the mapping employees --> project
}
get 方法应该很容易通过简单的 map 查找实现
关于go - 给定两个映射,如何找到两者之间的公共(public)键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50669176/
例如,我有一个父类Author: class Author { String name static hasMany = [ fiction: Book,
代码如下: dojo.query(subNav.navClass).forEach(function(node, index, arr){ if(dojo.style(node, 'd
我有一个带有 Id 和姓名的学生表和一个带有 Id 和 friend Id 的 Friends 表。我想加入这两个表并找到学生的 friend 。 例如,Ashley 的 friend 是 Saman
我通过互联网浏览,但仍未找到问题的答案。应该很容易: class Parent { String name Child child } 当我有一个 child 对象时,如何获得它的 paren
我正在尝试创建一个以 Firebase 作为我的后端的社交应用。现在我正面临如何(在哪里?)找到 friend 功能的问题。 我有每个用户的邮件地址。 我可以访问用户的电话也预订。 在传统的后端中,我
我主要想澄清以下几点: 1。有人告诉我,在 iOS 5 及以下版本中,如果您使用 Game Center 设置多人游戏,则“查找 Facebook 好友”(如与好友争夺战)的功能不是内置的,因此您需要
关于redis docker镜像ENTRYPOINT脚本 docker-entrypoint.sh : #!/bin/sh set -e # first arg is `-f` or `--some-
我是一名优秀的程序员,十分优秀!