这是在处理业务中遇到的:
数据如下:
public class Book {
private String bookId;
private String name;
private String depName;
private String authDepName;
public String getBookId() {
return bookId;
}
public void setBookId(String bookId) {
this.bookId = bookId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDepName() {
return depName;
}
public void setDepName(String depName) {
this.depName = depName;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Book book = (Book) o;
return bookId.equals(book.bookId) &&
name.equals(book.name) &&
depName.equals(book.depName);
}
@Override
public int hashCode() {
return Objects.hash(bookId, name, depName);
}
public Book(String bookId, String name, String depName, String authDepName) {
this.bookId = bookId;
this.name = name;
this.depName = depName;
this.authDepName = authDepName;
}
public Book(String bookId, String name, String depName) {
this.bookId = bookId;
this.name = name;
this.depName = depName;
}
@Override
public String toString() {
return "Book{" +
"bookId='" + bookId + '\'' +
", name='" + name + '\'' +
", depName='" + depName + '\'' +
", authDepName='" + authDepName + '\'' +
'}';
}
}
public class AuthBook {
private String authId;
private String bookId;
private String depName;
private String authDepName;
public String getAuthDepName() {
return authDepName;
}
public void setAuthDepName(String authDepName) {
this.authDepName = authDepName;
}
public String getAuthId() {
return authId;
}
public void setAuthId(String authId) {
this.authId = authId;
}
public String getBookId() {
return bookId;
}
public void setBookId(String bookId) {
this.bookId = bookId;
}
public String getDepName() {
return depName;
}
public void setDepName(String depName) {
this.depName = depName;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
AuthBook authBook = (AuthBook) o;
return Objects.equals(authId, authBook.authId) &&
Objects.equals(bookId, authBook.bookId) &&
Objects.equals(depName, authBook.depName) &&
Objects.equals(authDepName, authBook.authDepName);
}
@Override
public int hashCode() {
return Objects.hash(authId, bookId, depName, authDepName);
}
@Override
public String toString() {
return "AuthBook{" +
"authId='" + authId + '\'' +
", bookId='" + bookId + '\'' +
", depName='" + depName + '\'' +
", authDepName='" + authDepName + '\'' +
'}';
}
public AuthBook(String authId, String bookId, String depName, String authDepName) {
this.authId = authId;
this.bookId = bookId;
this.depName = depName;
this.authDepName = authDepName;
}
}
初始化数据:
//授权记录
List books =Arrays.asList(
new Book(“1”,“电子书01”,“技术部”),
new Book(“2”,“电子书02”,“技术部”),
new Book(“3”,“电子书03”,“技术部”),
new Book(“4”,“电子书04”,“技术部”),
new Book(“7”,“电子书05”,“技术部”)
);
List authSys = new ArrayList<>();
//拿到的各个部门的数据
List<AuthBook> authBooks = Arrays.asList(
new AuthBook("1", "2", "技术部", "易学"),
new AuthBook("2", "2", "技术部", "语音"),
new AuthBook("3", "1", "技术部", "语音"),
new AuthBook("4", "4", "技术部", "易学"),
new AuthBook("5", "6", "技术部", "易学")
);
需求如下:
1.根据部门1 部门2 去授权记录中拿各自都没有的数据
2.根据选中的list 的bookid 与第一步捞的授权记录中bookId进行比较
不相同 直接入库
相同 判断 授权部门是否相同
相同 修改读写权限
不相同 添加该部门授权记录数据
具体代码:(只是简单的写了一下)
//拿到易学的
Map<String, AuthBook> authBookMap = authBooks.stream().filter(authBook -> authBook.getAuthDepName().equals(“易学”)).collect(
Collectors.toMap(authBook -> authBook.getBookId(), authBook -> authBook)
);
//匹配易学要添加的
List bookList = books.stream().map(book -> {
return jisuan(book,authBookMap);
}).collect(Collectors.toList()).stream().filter(book -> book != null).collect(toList());
bookList.stream().forEach(System.out::println);
}
private Book jisuan(Book book,Map<String,AuthBook> authBookMap){
AuthBook authBook = authBookMap.get(book.getBookId());
if(authBook == null){
return book;
}
return null;
}