在多对多去重复
来源:互联网 发布:淘宝宝贝描述源代码 编辑:程序博客网 时间:2024/04/29 09:28
public DomainGroup addOrUpdateDomainString(String action, String domainList,String searchList, DomainGroup domainGroups) {
List<Domain> domains = new ArrayList<Domain>();
List<Domain> searchDomains=new ArrayList<Domain>();
String domainGroupName=domainGroups.getDomainGroupName();
int domainGroupId=domainGroups.getDomainGroupId();
domains = uniqueDomain(domainList,1);
searchDomains=uniqueDomain(searchList,2);
DomainGroup domainGroup = new DomainGroup();
if (action == "add") {
domainGroup.setDomainGroupName(domainGroupName);
this.insertDomainGroup(domainGroup);
domainGroup = this.getDomainGroupByDomainGroupName(domainGroupName);
} else {
domainGroup = this.getDomainGroupByDomainGroupId(domainGroupId);
}
if (domainGroup != null) {
if(domainGroup.getDomains() != null)
processUpdateExistingDomain(domainGroup.getDomains(),domains);
System.out.println(domains.size());
processUpdateExistingDomain(domainGroup.getDomains(),searchDomains);
System.out.println(searchDomains.size());
domainGroup.setDomains(domains);
domainGroup.getDomains().addAll(searchDomains);
System.out.println(domainGroup.getDomains().size());
this.updateDomainGroup(domainGroup);
}
return domainGroup;
}
private List<Domain> uniqueDomain(String domainList,int searchType) {
List<Domain> domains = new ArrayList<Domain>();
List<Domain> existingList = this.getAllDomainsBySearchType(searchType);
List<Domain> newDomainList = new ArrayList<Domain>();
String[] domain_arr = domainList.split("/n");
for (String dword : domain_arr) {
boolean duplicate = false;
Domain domain = null;
dword = processKeyword(dword.trim());
for ( Domain d : existingList ){
if(d.getDomainName().equalsIgnoreCase(dword) && d.getSearchType()==searchType){
domain = d;
existingList.remove(d);
break;
}
}
if (domain == null && domains.size() > 0 ){
for (Domain d : domains) {
if (d.getDomainName().equalsIgnoreCase(dword)) {
domain = d;
break;
}
}
}
if ( domain == null){
domain = new Domain();
domain.setDomainName(dword);
domain.setSearchType(searchType);
if (newDomainList.size() == 0 ){
newDomainList.add(domain);
}else{
for (Domain d : newDomainList) {
if (d.getDomainName().equalsIgnoreCase(domain.getDomainName()) && d.getSearchType()==searchType) {
duplicate = true;
break;
}
}
if ( !duplicate )
newDomainList.add(domain);
}
}else{
if (domains.size() == 0 )
domains.add(domain);
else {
for (Domain d : domains) {
if (d.getDomainName().equalsIgnoreCase(domain.getDomainName()) && d.getSearchType()==searchType) {
duplicate = true;
break;
}
}
if ( !duplicate )
domains.add(domain);
}
}
}
if(newDomainList.size() > 0){
this.insertDomains(newDomainList);
domains.addAll(newDomainList);
}
return domains;
}
private void processUpdateExistingDomain(List<Domain> originalDomains, List<Domain> newDomains){
if(!(originalDomains==null)){
for(Domain newDomain : newDomains){
for(Domain originalDomain : originalDomains){
if (originalDomain.getDomainName().equalsIgnoreCase(newDomain.getDomainName())){
originalDomains.remove(originalDomain);
break;
}
}
}
}
}
private String processKeyword(String keyword){
return Pattern.compile("[///"']").matcher(keyword).replaceAll("");
}
- 在多对多去重复
- Python对多属性的重复数据去重
- 在shell中对多条记录去重
- distinct 和 group by 在查询多列数据去重复时的区别在哪?
- SQL 的一对多查询 去重复
- oracle 多个字段去重复
- 统计 数据中 重复值的次数( 另外,可再对其进行排序,重复次数多的在前边
- 多个字段相同的重复记录去重
- 单个/多个List去重,合并,查询重复项
- sql---distinct显示多个字段,去重复
- 去重复
- 对数组的去重复操作(原始解决方法)
- 使用map 对list 进行去重复(JAVA)
- 多种方法对iOS数组中的元素去重复
- 利用set对list进行合并去重复
- List去重复——多个复杂字段判断去重
- List去重复——多个复杂字段判断去重
- Hibernate多对多去除重复记录
- 看完蜗居决定写两句 - 蜗居里的男人和女人
- 注册表
- cvseqpush cvgetseqelem 压入一个结构体指针时的陷阱
- 旅行
- www
- 在多对多去重复
- 手势研究
- ASP.NET - Timer 控件概述
- 圣诞晚会
- freeNAS ISCSI+Cluster(2)
- ASP.NET - 演练:Timer 控件简介
- hibernate入门
- Socket编程(C#)
- 在oracle中改变字段在表中的顺序