我想结合两个相似类型的数组列表。但是有条件地,如果一个对象的属性匹配,则将其他对象的属性合并为一个。组合两个对象的ArrayList,并在合并时有条件地改变对象的值
这里是我的模型类
public class SampleModel {
int number;
String name;
boolean isSimilar;
public SampleModel(int number, String name, boolean isSimilar) {
this.number = number;
this.name = name;
this.isSimilar = isSimilar;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isSimilar() {
return isSimilar;
}
public void setSimilar(boolean similar) {
isSimilar = similar;
}
@Override
public boolean equals(Object o) {
boolean result = false;
if (this == o){
result = true;
}
if (o == null || getClass() != o.getClass()){
result = false;
}
SampleModel that = (SampleModel) o;
if(name.matches("(.*)"+that.name+"(.*)")){
result = true;
}
if(name.matches("(.*)"+that.name)){
result = true;
}
if(name.matches(that.name+"(.*)")){
result = true;
}
if(name.contains(that.name)){
result= true;
}
return result;
}
@Override
public int hashCode() {
return Objects.hash(name);
}
}
我有这种类型的对象的筛选
ArrayList<SampleModel> sampleModels_one = new ArrayList<SampleModel>();
ArrayList<SampleModel> sampleModels_two = new ArrayList<SampleModel>();
ArrayList<SampleModel> combined = new ArrayList<SampleModel>();
sampleModels_one.add(new SampleModel(1,"a",true));
sampleModels_one.add(new SampleModel(1,"b",true));
sampleModels_one.add(new SampleModel(1,"c",true));
sampleModels_two.add(new SampleModel(1,"b",false));
sampleModels_two.add(new SampleModel(2,"c",false));
sampleModels_two.add(new SampleModel(3,"d",false));
sampleModels_two.add(new SampleModel(3,"e",false));
我想他们在这样的方式组合两个arrylist,所以combined
输出,将是这样的
SampleModel(1,"a",true)
SampleModel(1,"b",true)
SampleModel(1,"c",true)
SampleModel(1,"d",false)
SampleModel(1,"e",false)
我看了其他SO问题,但无法找到这是一个有效的方法。 在此先感谢
谢谢,你刚才救了我的一天 –