初级农民-请到新手上路获取积分
- 积分
- 6
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2018-1-31
- 最后登录
- 1970-1-1
|
第二题:
- public class QueryMangerImpl implements QueryManger{
- Map<Integer, Integer> employmentMap;
- public QueryMangerImpl () {}
- @Override
- public void setManger(int manager, int employee) throws CyclicRelationFoundException {
- if (queryManager(employee, manager)) {
- throw new CyclicRelationFoundException(String.format("There is management relation from %s to %s",
- manager, employee));
- }
- employmentMap.put(employee, manager);
- }
- @Override
- public void setPeer(int managerFrom, int employee) throws EmployeeNotFoundException, CyclicRelationFoundException {
- if (!employmentMap.containsKey(managerFrom)) {
- throw new EmployeeNotFoundException(String.format("Employee %s is not found"));
- }
- int newManager = employmentMap.get(managerFrom);
- if (queryManager(employee, newManager)) {
- throw new CyclicRelationFoundException(String.format("There is management relation from %s to %s", newManager, employee));
- }
- employmentMap.put(employee, newManager);
- }
- @Override
- public boolean queryManager(int manager, int employee) {
- if (manager == employee) {
- return false;
- }
- while (employmentMap.containsKey(employee)) {
- employee = employmentMap.get(employee);
- if (employee == manager) {
- return true;
- }
- }
- return false;
- }
- }
- public interface QueryManger {
- public void setManger(int manager, int employee) throws CyclicRelationFoundException;
- public void setPeer(int managerFrom, int target) throws CyclicRelationFoundException, EmployeeNotFoundException;
- public boolean queryManager(int manager, int employee);
- }
- public class CyclicRelationFoundException extends Exception {
- public CyclicRelationFoundException(String message) {
- super(message);
- }
- }
复制代码 |
|