1) 公司的部門劃分
{{L1: 'HR', L2:'staffing'},
{L1: 'HR', L2:'training'},
{L1: 'HR', L2:'motivation'},
{L1: 'Finance', L2:'Banking'},
{L1: 'Finance', L2:'Insurance'},
{L1: 'Finance', L2:'Investment'},
{L1: 'Technology', L2:'Development'},
{L1: 'Technology', L2:'Testing'},
{L1: 'Technology', L2:'Business'}
...}
2) 員工資訊
{{'id': '1', name: 'name1', L1: 'Finance', L2:'Insurance'},
...,
{'id': '1000', name: 'name1000', L1: 'Technology', L2:'Business'}}
課題:對于有些部門如果目前已沒有員工所在,將其從1)中去掉,生成最新的部門劃分。
求大神給寫法
uj5u.com熱心網友回復:
把1轉成list<部門>物件把2轉成list<員工>物件,把所有員工的部門愁出來變成一個無重復的部門集合
遍歷1每個部門對像,判斷是否在無重復著部門集合里存在。
uj5u.com熱心網友回復:
你這個設計一個部門表和一個員工表,部門表的部門是帶父子關系,員工表:id, name, department_iduj5u.com熱心網友回復:
令 key12 = L1+L2;將員工資訊讀入 map
Map map = new HashMap();
for { ...
map.put(key12,person);//person 為員工資訊
...
}
//將部門資訊讀入 deptMap;
遍歷 deptMap->keyEle {
if map.get(keyEle.key)==null
{
deptMap.remove(keyEle.key);
}
}
//重新輸出 deptMap
//偽代碼 大致如此。
uj5u.com熱心網友回復:
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Objects;
/**
* @author zhaojinhui
* @date 2021/1/29 16:06
* @apiNote
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Dept {
private String l1;
private String l2;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Dept dept = (Dept) o;
return Objects.equals(l1, dept.l1) &&
Objects.equals(l2, dept.l2);
}
@Override
public int hashCode() {
return l1.hashCode() << 5 - 1 - l2.hashCode();
}
}
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author zhaojinhui
* @date 2021/1/29 16:06
* @apiNote
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Emp {
private Integer id;
private String name;
private String l1;
private String l2;
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* @author zhaojinhui
* @date 2021/1/29 16:05
* @apiNote
*/
public class Test {
public static void main(String[] args) {
List<Dept> depts = new ArrayList<>();
Collections.addAll(depts,
new Dept("HR","staffing"),
new Dept("HR","training"),
new Dept("HR","motivation"),
new Dept("Finance","Backing"),
new Dept("Finance","Insurance"),
new Dept("Finance","Investment"),
new Dept("Technology","Development"),
new Dept("Technology","Testing"),
new Dept("Technology","Business")
);
List<Emp> emps = new ArrayList<>();
Collections.addAll(emps,
new Emp(1,"name","Finance","Backing"),
new Emp(2,"name","HR","training"),
new Emp(3,"name","Technology","Testing")
);
//根據L1和L2計算hashCode
Set<Integer> deptHashCodeSet = emps.stream().map(m -> m.getL1().hashCode() << 5 - 1 - m.getL2().hashCode()).collect(Collectors.toSet());
List<Dept> collect = depts.stream().map(emp -> deptHashCodeSet.contains(emp.hashCode()) ? emp : null).collect(Collectors.toList());
collect.removeAll(Collections.singleton(null));
collect.forEach(System.out::println);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/254190.html
標籤:Web 開發
上一篇:求解方案
